sha*_*are 16 generics jsx typescript
Typescript引入了对JSX语法的支持.所以我的表达式与传统的*.ts文件非常相似,但没有*.tsx文件:
const f = <T1>(arg1: T1) => <T2>(arg2: T2) => {
return { arg1, arg2 };
}
Run Code Online (Sandbox Code Playgroud)
我想知道有没有办法让它在*.tsx文件中运行?
Dav*_*ret 18
您可以使用函数表达式:
const f = function<T1>(arg1: T1) {
return function<T2>(arg2: T2) {
return { arg1, arg2 };
};
};
Run Code Online (Sandbox Code Playgroud)
或者,我发现这是有效的:
const f = <T1, T2>(arg1: T1) => (arg2: T2) => {
return { arg1, arg2 };
};
Run Code Online (Sandbox Code Playgroud)
在旁注中,似乎在提供多个通用参数时它将编译良好,但不是一个.例如,提供虚拟通用参数将使此工作:
const f = <T1, _>(arg1: T1) => {
return { arg1 };
};
// or just adding a comma
const g = <T1,>(arg1: T1) => {
return { arg1 };
};
Run Code Online (Sandbox Code Playgroud)
但这绝对不是理想的.可能有另一种方法只使用一个通用参数来完成这项工作,但我不确定.
Dan*_*ser 18
这是解析歧义问题的结果.使这个明确无误的一件事是添加一个明确的约束T1.
const f = <T1 extends unknown>(arg1: T1) => {
return { arg1 };
}
Run Code Online (Sandbox Code Playgroud)
无论如何,类型参数T1隐式地具有约束unknown,因此在这种情况下,您的代码在功能上是等效的.
采用此解决方案,您可以应用原始示例中的每个箭头功能.
| 归档时间: |
|
| 查看次数: |
6030 次 |
| 最近记录: |