TypeScript极速梳理


9.泛型

<p>定义⼀个函数或类时,有些情况下⽆法确定其中要使⽤的具体类型(返回值、参数、属性的类型不能确定),此时就需要泛型了 举例: <code>&amp;lt;T&amp;gt;</code>就是泛型,(不⼀定⾮叫 <code>T</code>),设置泛型后即可在函数中使⽤<code>T</code> 来表示该类型:</p> <pre><code>function test&amp;lt;T&amp;gt;(arg: T): T{ return arg; } // 不指名类型,TS会⾃动推断出来 test(10) // 指名具体的类型 test&amp;lt;number&amp;gt;(10)</code></pre> <p>泛型可以写多个:</p> <pre><code>function test&amp;lt;T, K&amp;gt;(a: T, b: K): K{ return b; } // 为多个泛型指定具体⾃值 test&amp;lt;number, string&amp;gt;(10, &amp;quot;hello&amp;quot;);</code></pre> <p>类中同样可以使⽤泛型:</p> <pre><code>class MyClass&amp;lt;T&amp;gt;{ prop: T; constructor(prop: T){ this.prop = prop; } }</code></pre> <p>也可以对泛型的范围进⾏约束:</p> <pre><code>interface Demo{ length: number; } // 泛型T必须是MyInter的⼦类,即:必须拥有length属性 function test&amp;lt;T extends Demo&amp;gt;(arg: T): number{ return arg.length; } test(10) // 类型“number”的参数不能赋给类型“Demo”的参数 test({name:'张三'}) // 类型“{ name: string; }”的参数不能赋给类型“Demo”的参数 test('123') test({name:'张三',length:10})</code></pre>

页面列表

ITEM_HTML