打字稿 - 在指定特定字段值的同时定义基于其他类型的类型

时间:2021-05-30 06:45:14

标签: typescript typescript-typings

我正在编写一个 Graphql API 并在打字稿中定义类型。 我希望在描述 API 输入时强制执行这些类型。

我想知道我是否可以做这样的事情:

enum ActionType {
  CREATE = 'create',
  DELETE = 'delete',
}

interface BaseAction {
  actionType: ActionType;
};

type DeleteAction = BaseAction & {  
  actionType: ActionType.DELETE;
  id: string;
};

type CreateAction = BaseAction & {  
  actionType: ActionType.CREATE
  data: string;
  secArg: number;
};

我有一个接口 BaseAction 和其他类型在指定相关操作类型的同时继承/实现它。

这是最好的做法吗?或者有另一种方法来实现这样的定义?

提前致谢。

2 个答案:

答案 0 :(得分:1)

我认为 this 是您正在寻找的(您正在做的也应该有效)。您还可以从 exhaustive checking 使用类似这样的模式简化函数中受益。

答案 1 :(得分:0)

如果您想在创建 material.mainTexture 实例时自动检测操作类型,您可以将类型更改为类并实现 DeleteAction 接口。像这样:

BaseAction