是因为 TypeScript 默认情况下会对解构赋值进行严格的类型检查,如果解构的对象中的属性在目标类型中不存在,就会报错 TS2339。解决这个错误的方法有两种:
interface MyObject {
name?: string;
age?: number;
}
const obj: MyObject = { name: 'John' };
const { name, age }: MyObject = obj as MyObject;
在上面的例子中,我们使用了类型断言 as MyObject
来告诉 TypeScript 解构的对象 obj
是一个 MyObject
类型的对象,并且其中的属性是可选的。这样就可以避免 TS2339 错误。
interface MyObject {
name?: string;
age?: number;
}
const obj: MyObject = { name: 'John' };
const { name = '', age = 0 }: MyObject = obj;
在上面的例子中,我们为解构的属性 name
和 age
设置了默认值,即使 obj
中不存在这些属性,也不会报错。
总结起来,解决在解构时使用可选的属性声明获取 TS2339 错误的方法有两种:使用类型断言或者为解构的属性设置默认值。具体使用哪种方法取决于实际情况和需求。
领取专属 10元无门槛券
手把手带您无忧上云