我这里有一些代码,IDE在NEVER类型字段上向我抛出了一个错误。我不太确定我应该做些什么来满足这个IDE。我将isAnonymous字段设置为false,所以我假设我应该将primaryIdentityHas和primaryIdentitySpace都保留为空,但当我这样做时,它抱怨我缺少这些字段。有人能给我提供一些关于这个问题的见解吗?
export const getOneDSCoreFieldsUnAuth = (
context: TelemetryLoggerContext,
): CoreFields => {
return {
app: {
name: context.appName,
platform: '',
version: '1',
},
session: {
id: context.correlationId,
},
user: {
isAnonymous: true,
},
};
};
export declare namespace User {
interface Contract {
primaryIdentityHash?: string;
primaryIdentitySpace?: string;
tenantId?: string;
tenantGroup?: string;
isAnonymous?: boolean;
}
type StrictContractKnownUser = {
primaryIdentityHash: string;
primaryIdentitySpace: PrimaryIdentitySpace;
tenantId?: string;
tenantGroup?: string;
isAnonymous?: false;
};
type StrictContractUnknownUser = {
primaryIdentityHash: never;
primaryIdentitySpace: never;
tenantId?: never;
tenantGroup?: never;
isAnonymous: true;
};
type StrictContract = StrictContractKnownUser | StrictContractUnknownUser;
}
我收到以下错误消息。
类型"{是匿名:true ;}"不能赋给类型" StrictContract "。类型" {isAnonymous:类型"StrictContractUnknownUser"中缺少以下属性:主要身份散列、主要身份空间(2322)数据模型。d. ts(193,5):预期类型来自此处在类型"CoreFields"上声明的属性"user"
1条答案
按热度按时间0md85ypi1#
never
是一个类型,它意味着“不能给这个赋值”(甚至不能是未定义的或空的)。你有一个必需的属性,你不能给它赋值--这是不能满足的。一种解决方案可能是要求它们是never和可选的,如果您尝试使用一个既为
isAnonymous
又为never字段传递值的对象,这将导致错误:或者,对于功能相同的事情,您可以简单地从类型中省略它们: