[英]Typescript - optional type if generic is not provided
I Would like optionalFields to have type of OptionalFieldsByTopic<Topic>
if generic is not provided, otherwise OptionalFieldsByTopic<T>
.如果未提供泛型,我希望optionalFields具有
OptionalFieldsByTopic<Topic>
类型,否则OptionalFieldsByTopic<T>
。 Thanks for help in advance.提前感谢您的帮助。
export interface ICreateItem<T extends Topic = never> { // T must be optional
id: string;
name: string;
tags: string[];
collectionId?: string;
topic: string;
optionalFields?: OptionalFieldsByTopic<T>; // If T is not provided then this is equal OptionalFieldsByTopic<Topic>
}
type OptionalFieldsByTopic<T extends keyof IOptionalFields> = IOptionalFields[T];
OptionalFIeldsByTopic example: OptionalFIeldsByTopic 示例:
const test: OptionalFieldsByTopic<"books"> = { author: "brandon", language: "english" }
export type Topic = keyof IOptionalFields;
mockup data:样机数据:
export interface IOptionalFields {
books: {
author?: string;
language?: string;
translation?: string;
};
vehicle: {
model?: string;
type?: string;
color?: string;
};
painting: {
author?: string;
description?: string;
image?: string;
};
}
This should work:这应该有效:
export interface ICreateItem<T extends Topic = Topic> {
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.