我有一个这样的函数:
function myFunc(input: A | B | C) {
let key: keyof A | keyof B | keyof C;
for(key in input)
{
let temp = input[key];
console.log(temp);
}
}
A、B和C的定义如下:
interface A {
u: number,
t: string,
s: boolean,
r: boolean
}
interface B {
w: string,
v: string
}
interface C {
z: string,
y: number,
x: boolean
}
我try 使用this post中的方法来创建一个变量,该变量可用于循环输入对象的属性,而不管它是哪个接口的实例,但我得到了以下错误:
TS2405: The left-hand side of a 'for...in' statement must be of type 'string' or 'any'.
然而,如果我try 这样定义‘key’:
let key:any;
我得到一个不同的错误:
TS7053: Element implicitly has an 'any' type because expression of type 'any' can't be used to index type 'A | B | C'.
有没有一种方法来定义"key",这样我就可以把它变成一个函数,或者我必须把它分成3个函数,每个接口一个?