假设我们有如下所示的TypeScript代码:
type User = {
id: number,
name: string,
}
let user1: User = {id: 123, name: "Hello"};
let user2: User = {id: 456, name: "World"};
let keys: (keyof User)[] = ["id", "name"];
for (let key of keys) {
user1[key] = user2[key];
}
Run Code Online (Sandbox Code Playgroud)
这给出了错误
Type 'string | number' is not assignable to type 'never'.
Run Code Online (Sandbox Code Playgroud)
为声明
Type 'string | number' is not assignable to type 'never'.
Run Code Online (Sandbox Code Playgroud)
如果我们将的定义更改keys
为
user1[key] = user2[key];
Run Code Online (Sandbox Code Playgroud)
错误消失了,但是我们失去了类型安全性。
有什么方法可以在保持类型安全的同时避免发生此错误?