【发布时间】:2020-08-23 23:35:12
【问题描述】:
假设你有一个非常大的对象定义为 TypeScript 接口:
interface AccountInterface {
accountIdentifier?: string;
sid?: string;
idToken?: {
aio?: string;
};
idTokenClaims?: {
aio?: string;
};
}
我希望对象始终具有其属性和子属性。它们可以是字符串或空字符串:
let account = {
accountIdentifier: "",
sid: "",
idToken: {
aio: "",
},
idTokenClaims: {
aio: "",
},
};
阅读我认为可以这样做的其他问题:
const emptyAccount = {} as AccountInterface
console.log('emptyAccount ', emptyAccount)
console.log('emptyAccount.sid ', emptyAccount.sid)
但这并不会根据需要创建一个所有属性都为空字符串的对象。
如果这样的事情是可能的,那就太好了,所以不需要在代码中复制对象,就像一个用于接口,一个用于具有空字符串属性的对象。
【问题讨论】:
-
我认为 typescript 中没有“与接口匹配的默认值”功能,而且我也看不到任何自动提供这种功能的明智方法。为什么默认为空字符串?如果类型是
string|number|null,那么默认值是什么。如果该值是可选的(在您的情况下它们都是可选的)是默认的undefined或类型的默认值(如果存在),如果存在,那么为什么它是可选的? -
"阅读其他问题" - 哪些?请链接它们。
-
我是 TS 新手,所以仍然在这里学习。更新了问题。
标签: javascript typescript constructor interface typescript-typings