为什么TS会为此代码引发错误?我用interface Args
属性定义了一个length
,但是它仍然抛出:
interface Args {
length: number
}
function log<Args>(arg: Args): Args {
console.log(arg.length); // <= why length doesn't exist?
return arg;
}
$ tsc index.ts
index.ts:11:19 - error TS2339: Property 'length' does not exist on type 'Args'.
11 console.log(arg.length);
~~~~~~
答案 0 :(得分:2)
使用<Args>
定义一个通用类型参数(可以是任何类型的参数)。您可以使用约束定义类型参数:
interface Args {
length: number
}
function log<T extends Args>(arg: T): T {
console.log(arg.length);
return arg;
}
或者您可以完全忽略类型参数(取决于您要执行的操作)
interface Args {
length: number
}
function log(arg: Args): Args {
console.log(arg.length);
return arg;
}