小编Vai*_*v K的帖子

如何避免TypeScript中的动态keyof对象分配错误

假设我们有如下所示的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)

错误消失了,但是我们失去了类型安全性。

有什么方法可以在保持类型安全的同时避免发生此错误?

typescript keyof

8
推荐指数
1
解决办法
53
查看次数

标签 统计

keyof ×1

typescript ×1