TypeScript中的泛型

时间:2012-10-14 21:53:19

标签: generics typescript

除了使用类型化数组之外,有没有办法在TypeScript中使用其他类型参数化类型?

KnockoutJs确实很有必要。

4 个答案:

答案 0 :(得分:18)

虽然正在考虑使用泛型,但尚未支持泛型。这是规范所说的:

  

注意:TypeScript目前不支持Generics,但我们希望将它们包含在最终语言中。   由于TypeScript的静态类型系统没有运行时表现形式,因此Generics将基于“类型擦除”   并且仅用作表达接口,类和中的参数类型关系的管道   功能签名。

来自第3节末尾的TypeScript语言规范。

答案 1 :(得分:14)

泛型终于来了:http://blogs.msdn.com/b/typescript/archive/2013/06/18/announcing-typescript-0-9.aspx

截至目前,它处于测试阶段,因此请谨慎使用。

答案 2 :(得分:0)

我正在使用相当肮脏的解决方法。可以将类分配给any类型的变量。此代码有效:

class A{}
var test:any=A;
var a=new test();

因此,您可以通过添加任何类型

的其他参数来参数化您的方法
function(param:any){
    var test=new param();
    test.someFunction();
}

当然这是非常糟糕的风格,可能不推荐。但对我来说,这将涵盖语言中包含泛型的时间。

答案 3 :(得分:0)

对于像我这样现在遇到这个问题的人,我们在TypeScript中有Generics,这里有一些信息,包括在Typescript网站上关于Generics的官方文档的链接,因为它解释得很好,希望永远保持 - 在进行更改时更新,并显示示例用法:

https://www.typescriptlang.org/docs/handbook/generics.html

泛型允许创建可以在多种类型而不是单一类型上工作的组件。

正如官方文档中所示,身份功能是仿制药在工作中最基本的例证。身份函数是一个函数,它将返回传入的任何内容。

以下是我们在Generics之前的选择:

{% if p.language == page.language and p.nav-order %}

以下是Generics的工作原理:

// without Generics option 1 - explicitly define and get tied to a single type.  
function identity(arg: number): number {
    return arg;
}

// without Generics option 2 - use the 'any' type 
// but lose type information on the incoming arg by the time we return it.
function identity(arg: any): any {
    return arg;
}