首页  编辑  

使用类型断言或索引签名解决临时属性编译错误[原创]

Tags: /Node & JS/   Date Created:
Typescript中,有个 class Demo {
    name: string,
   address: string,
}
const demo: Demo;
现在我想在 demo 对象上 增加一个 sex 属性,例如:
demo.sex = 'M';
VS Code中会提示错误。如何让 demo 能临时增加一个属性而不报错?

方法一:使用类型断言
使用类型断言可以让 TypeScript 暂时忽略类型检查,这样你就可以为对象添加新的属性:
class Demo {
    name: string;
    address: string;
}

const demo: Demo = { name: "Alice", address: "Wonderland" };

// 使用类型断言
(demo as any).sex = 'M';
方法二:使用索引签名
通过为类添加索引签名,可以允许对象有任意的属性:
class Demo {
    name: string;
    address: string;
    [key: string]: any; // 添加索引签名
}

const demo: Demo = { name: "Alice", address: "Wonderland" };

demo.sex = 'M'; // 现在可以直接添加新的属性