interface Test {
a: string;
b: number;
c: number;
}
const test = {
a: 'a',
b: 1,
d: []
};
delete test.d;
const test2:Test = { ...test, c:1 };
=> Type '{ a: string; b: number; c: number; d: never[]; }' is not assignable to type 'Test'.
=> Object literal may only specify known properties, and 'd' does not exist in type 'Test'.
我通过删除运算符删除了 d 属性,但是我收到了类似的错误。
这种情况有办法吗?谢谢你的阅读!
答案 0 :(得分:2)
变量的类型在赋值时被赋予,并且我不认为Typescript使用delete运算符执行任何流控制魔法。你可以让传播操作员摆脱d
:
interface Test {
a: string;
b: number;
c: number;
}
const test = {
a: 'a',
b: 1,
d: []
};
let { d, ...test3} = test
const test2:Test = { ...test3, c:1 };
答案 1 :(得分:0)
如果您使用的是tsconfig.json文件,请考虑添加:
{
"compilerOptions": {
...
"strictNullChecks": false,
}
...
}