相当标准的用例是创建一个空对象,并用必要的数据填充它。在填充过程的最后,该对象将包含其所有必需的属性,但是在创建对象时,该对象将没有任何属性,因此TypeScript不允许我使用正确的类型键入此新对象。
例:
interface ISomeType {
x: string;
y: string;
}
function buildObj(): ISomeType {
const obj: ISomeType = {}; // TS Error: {} doesn't include x and y
obj.x = foo();
obj.y = bar(); // At the end of the filling process, the object is correct
return obj;
}
我该如何处理?如何让TypeScript理解这个新对象应该是指定的类型,它还没有必需的属性,并且最后将具有它们?
如果我obj
用类型标记,Partial<ISomeType>
则无法标记ISomeType
我打算使用的函数返回类型。
我将首先构造零件,然后返回对象文字:
function buildObj(): ISomeType {
const x = foo(); // const x: ISomeType['x'] = foo();
const y = bar();
return {
x,
y
};
}
在返回对象之前无需创建对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句