【发布时间】:2019-08-28 06:35:14
【问题描述】:
我有一个函数,它接受一些值,并在其上执行 + 运算符和一个 2 值:
function myFunction(input: number): number {
return input + 2;
}
如果我传递一个数字,它会将这个数字添加到2:
const result = myFunction(2);
console.log('Result: ', result);
// Result: 2
如果我传递一个字符串,它会将这个字符串连接到2:
const result = myFunction(");
console.log('Result: ', result);
// Result: "22"
到目前为止一切都很好。现在我想使用泛型来捕获类型:
function myFunction<T>(input: T): T {
return input + 2;
}
如果我想使用它来捕获参数的隐式类型,我可以这样做:
const result = myFunction(2);
console.log('Result: ', result);
// Error: `(parameter) input: T. Operator '+' cannot be applied to types 'T' and '2'.`
如您所见,TypeScript 返回有关类型和 + 运算符的错误,我不明白为什么。如果我明确设置类型,则相同:
const result = myFunction<number>(2);
console.log('Result: ', result);
// Error: `(parameter) input: T. Operator '+' cannot be applied to types 'T' and '2'.`
我不明白为什么它会返回 + 的错误。欢迎任何帮助!
【问题讨论】:
-
也许在这里得到了回答:stackoverflow.com/questions/54470329/…
-
还是不明白为什么
myFunction<number>(2);不强制类型为return input + 2;;在这种情况下,TypeScript 不应该返回错误!
标签: typescript