javascript - 尖括号(如方法名)的用途是什么() 在打字稿中
问题描述
如果有任何关于它为什么我们在类型脚本中使用尖括号 <> 的教程,你能帮我吗?例如,我在这里给出了一些代码,我需要解释一下。
export class HomePage {
constructor(public navCtrl: NavController) {
let a = this.testfunc<boolean>(4);
console.log(a);
}
testfunc<T>(s) {
return s;
}
}
谢谢
解决方案
那些表示泛型。testfunc<T>(s){ return s; }
表示testfunc
接受泛型类型参数T
。testfunc<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");
推荐阅读
- c# - 在每行开始之前添加空格,除了字符串的第一行?
- micronaut - Micronaut 配置属性默认值
- postgresql - 从多边形列表中计算两个/四个角(东、北、西、南)
- javascript - “Home”不是 Node JS 上的构造函数
- pydev - PyDev 不显示 * 字符
- javascript - 如果使用锚标记在内部过滤器中打开手风琴,如何打开手风琴
- f# - 具有继承的类中的缩进规则?
- python - python - 如何使用python中的一组标签生成标记(分类)一组对象的所有可能方式?
- android - 我如何在 android 应用程序中模拟 REST 后端
- javascript - 在对象数组上使用 forEach()