繁体   English   中英

Typescript - 如果没有提供泛型,则为可选类型

[英]Typescript - optional type if generic is not provided

如果未提供泛型,我希望optionalFields具有OptionalFieldsByTopic<Topic>类型,否则OptionalFieldsByTopic<T> 提前感谢您的帮助。

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 示例:

const test: OptionalFieldsByTopic<"books"> = { author: "brandon", language: "english" }

export type Topic = keyof IOptionalFields;

样机数据:


export interface IOptionalFields {
   books: {
      author?: string;
      language?: string;
      translation?: string; 
   };
   vehicle: {
      model?: string;
      type?: string;
      color?: string;
 
   };
   painting: {
      author?: string;
      description?: string;
      image?: string;
   };
}


这应该有效:

export interface ICreateItem<T extends Topic = Topic> {
...
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM