我正在使用一个生成的相当大的复杂类型。我需要通过创建变量并将其所有属性初始化为默认/空值来检查类型上是否存在某些属性,因为这会导致太多工作。
有没有一种方法可以检查属性是否直接存在于类型上,而无需实例化它们或创建具有所有属性的变量并对其进行检查? 前任: 假设我有以下内容
export type Mutations {
upsertItem: {},
upsertItemMany: {},
removeItem: {},
removeItemMany: {},
upsertCustomer: {},
upsertCustomerMany: {},
removeCustomer: {},
removeCustomerMany: {},
... (1000+ more properties exist)
}
我尝试做类似的事情:
var mutations: Mutations;
Object.hasOwn(mutations, 'upsertItem');
但我得到的只是以下错误:
“无法将未定义或 null 转换为对象”如果我尝试像这样初始化变量
let mutations: Mutation = {};
我收到一个错误,我需要指定它的所有属性,这违背了目的。我猜这可以使用反射来解决,但我不知道如何解决。
关于 Typescript 需要记住的一件好事是它只是编译时的事情。运行时不会出现任何打字稿内容。这包括
type
构造。您正在尝试执行运行时检查,但这是不可能的,因为代码在编译后和运行时根本不知道与打字稿相关的任何信息。这只是简单的 javascript