3
是否有可能在TypeScript中的接口声明中有条件。我正在寻找的是一种方式来说,根据第一个键的值,第二个键可以是这些值。Javascript条件内部TypeScript接口
例(非工作):
interface getSublistValue {
/** The internal ID of the sublist. */
sublistId: 'item' | 'partners';
/** The internal ID of a sublist field. */
if (this.sublistId === 'item') {
fieldId: 'itemname' | 'quantity';
}
if (this.sublistId === 'partners') {
fieldId: 'partnername' | 'location';
}
}
所以,如果我用,当我创造了'someValue'对象我仍然得到所有4个选项'fieldId'与自动完成,但至少它给了我一个警告这种方法如果sublistId和fieldId不匹配(即'item'和'partnername')。得到我的是,如果我的'someValue'是'const someValue:SublistItem | SublistPartners = { sublistId:'partners', fieldId:'location' };'然后我得到'if(someValue.sublistId ==='item'){}'条件说'location'是不是'itemname'或'quantity',我已经知道了,为什么我会得到这个警告? –
@JonLamb嗯......显示的错误信息是没有用的。在这种情况下,它知道'sublistId'只会是''partners'',因此当您检查“item”时会引发错误。如果你用“合作伙伴”替换“item”,那么它会起作用。尝试一种情况,你从某处收到一个值,但你不确定数据是什么。我更新了这个例子。 –