export const licenseKeySchema = yup
.object<Partial<apiTypes.LicenseKey>>()
.shape({
username: yup.string().required(),
lastUpdatedOn: yup.number().required(),
licenseKey: yup.string().required(),
expiry: yup.number().required()
});
export const endpointSchema = yup.object<Partial<apiTypes.Endpoint>>({
hostname: yup.string().required(),
ipAddress: yup.string().required(),
lcmIdentifier: yup.string().required(),
licenseKeys: yup.array().of(licenseKeySchema).required()
});
export interface LicenseKey {
vmid: string;
createdBy: string;
lastModifiedBy: string;
createdOn: number;
lastUpdatedOn: number;
properties?: any;
username: string;
hostname: string;
lcmIdentifier: string;
licenseKey: string;
orgId: string;
accessKey: string;
lemansGatewayUri: string;
message?: string;
accessKeyLink: string;
expiry: number;
lastHeartBeat?: any;
ipAddress: string;
}
export interface Endpoint {
hostname: string;
licenseKeys: LicenseKey[];
ipAddress: string;
lcmIdentifie
}
得到以下错误类型'ArraySchema
>'不可分配给类型 'MixedSchema 。 这些类型之间'nullable(...)。nullable'的类型不兼容。 类型'{(isNullable ?: true |未定义):NullableArraySchema >; (isNullable:false):ArraySchema <...>; (是否为空?: 布尔|未定义):ArraySchema <...>; }'不可分配给type '{(isNullable ?: true |未定义):MixedSchema ; (isNullable:否):MixedSchema ; (isNullable ?:布尔|未定义):MixedSchema <...>; }'。 参数“ isNullable”和“ isNullable”的类型不兼容。 类型'false'不能分配给类型'true |未定义”。
答案 0 :(得分:0)
您声明自己的licenseKeySchema
是Partial
的{{1}}:
LicenseKey
所以您必须在 export const licenseKeySchema = yup
.object<Partial<apiTypes.LicenseKey>>() <- this line
.shape({ ... })
中做同样的事情:
Endpoint
编辑:
这里是堆叠闪电战:https://stackblitz.com/edit/typescript-yxmshr?file=yup.ts
其中有一个错误。取消注释行并在 export interface Endpoint {
hostname: string;
licenseKeys: Partial<LicenseKey>[]; <- this line
ipAddress: string;
...
}
界面中注释掉它上方的行后,它就会起作用。