typescript手册目前没有关于箭头函数的内容。正常的功能 可以使用以下语法进行泛型: 例子:
function identity<T>(arg: T): T {
return arg;
}
箭头函数的语法是什么?
typescript手册目前没有关于箭头函数的内容。正常的功能 可以使用以下语法进行泛型: 例子:
function identity<T>(arg: T): T {
return arg;
}
箭头函数的语法是什么?
当前回答
Edit
根据@Thomas的评论,在更新的TS编译器中,我们可以简单地做:
const foo = <T,>(x: T) => x;
原来的答案
完整的例子解释了Robin引用的语法…带回家给我:
通用函数
像下面这样的东西是可以的:
function foo<T>(x: T): T { return x; }
然而,使用箭头泛型函数将不会:
const foo = <T>(x: T) => x; // ERROR : unclosed `T` tag
解决方法:在泛型参数上使用扩展来提示编译器 它是通用的,例如:
const foo = <T extends unknown>(x: T) => x;
其他回答
语言规范在p.64f上写着
形式为< T >(…)=>{…}可以解析为an 带有类型参数或类型断言的箭头函数表达式 应用于没有类型参数的箭头函数。它被解析为 前[. .]
例子:
// helper function needed because Backbone-couchdb's sync does not return a jqxhr
let fetched = <
R extends Backbone.Collection<any> >(c:R) => {
return new Promise(function (fulfill, reject) {
c.fetch({reset: true, success: fulfill, error: reject})
});
};
这对我很有用
const Generic = <T> (value: T) => {
return value;
}
使用<T, extends{}>在试图传递null作为参数时抛出错误。我更喜欢使用<T,>,因为它解决了这个问题。我还不知道原因。但这对我很管用。
这么晚了,但与ES6不需要扩展它仍然为我工作....:)
let getArray = <T>(items: T[]): T[] => {
return new Array<T>().concat(items)
}
let myNumArr = getArray<number>([100, 200, 300]);
let myStrArr = getArray<string>(["Hello", "World"]);
myNumArr.push(1)
console.log(myNumArr)
我觉得上面的例子令人困惑。 我正在使用React和JSX,所以我认为它使场景复杂化。
我从TypeScript Deep Dive中得到了澄清,它声明了箭头泛型:
解决方法:在泛型参数上使用扩展来提示编译器它是一个泛型,这来自一个更简单的例子,帮助了我。
const identity = < T extends {} >(arg: T): T => { return arg; }