【发布时间】:2023-02-25 20:47:29
【问题描述】:
function getMinimum<T extends {length : number}>(arg1 : T, arg2 : T) : T {
if (arg1.length >= arg2.length) {
return arg2;
}
else {
return arg1;
}
}
let str = "Hello world";
const res0 = getMinimum([1, 2, 3], str); // Argument of type 'number[]' is not assignable to parameter of type 'string'
const res1 = getMinimum([1, 2, 3], {length: 12}); // res1 type - number[] | {length: number}
在上面的代码块中,getMinimum([1, 2, 3], {length: 12}) 工作正常但 getMinimum([1, 2, 3], str) 触发类型错误。
我认为,它不应该触发类型错误,并且应该为 res0 分配一种类型:number[] |细绳。但是 Typescript 不会为 res0 这样做,但会为 res1 这样做,为什么会有区别?
【问题讨论】:
标签: typescript typescript-generics