ImF*_*nky 6 typescript typescript3.0
问题是:我想创建一个获取参数并返回相同类型的函数。
我做了一个最简单的例子:
type Test = <T>(arg: T) => T;
const test: Test = (arg: string) => arg;
Run Code Online (Sandbox Code Playgroud)
Test 类型函数的这个简单实现会抛出错误“类型‘T’不能分配给类型‘string’”
有人可以解释一下为什么在不使用模板化参数中的 props 时会发生此错误吗?
https://github.com/Microsoft/TypeScript/issues/30496实际上有答案:Test是一个泛型类型。您的定义不符合泛型类型,因为T无法分配给string。您应该能够使用它并使其正常工作,但如果是字符串test<number>(num),那就不兼容。arg
不过,您可以使该类型变得通用。这将允许您在声明函数类型时缩小类型范围。
type Test<T> = (arg: T) => T;
const test<string> = arg => arg; //arg is a string;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16787 次 |
| 最近记录: |