首页 > 解决方案 > 尖括号(如方法名)的用途是什么() 在打字稿中

问题描述

如果有任何关于它为什么我们在类型脚本中使用尖括号 <> 的教程,你能帮我吗?例如,我在这里给出了一些代码,我需要解释一下。

export class HomePage {

     constructor(public navCtrl: NavController) {
         let a = this.testfunc<boolean>(4);
         console.log(a);
     }

     testfunc<T>(s) {
         return s;
     }
}

谢谢

标签: javascriptangularjstypescript

解决方案


那些表示泛型testfunc<T>(s){ return s; }表示testfunc接受泛型类型参数Ttestfunc<boolean>(4)为该类型参数提供一个类型实参 ( boolean)。在那个例子中,它没有做任何事情,因为testfunc不使用T,但考虑:

function foo(arg: string) {
    let numbers: Array<number> = [];
    numbers[0] = arg; // Error: Type 'string' is not assignable to type 'number'.
}

声明numbers为一个数组number。由于arg是一个字符串,你不能这样做numbers[0] = arg

与之比较:

function foo<T>(arg: T) {
    let numbers: Array<T> = [];
    numbers[0] = arg; // Error    
}

现在,foo不知道numbers包含什么,只是它包含的任何内容都将匹配arg. 所以这两个调用都是有效的:

foo<number>(4);
foo<string>("bar");

我在那些强调的调用中包含了类型参数,但是 TypeScript 可以在很多时候推断它们:

foo(4);
foo("bar");

推荐阅读