gpt4 book ai didi

angular - 如何使用 TypeScript 提取接口(interface)的属性(最好没有第 3 方库)

转载 作者:行者123 更新时间:2023-12-05 07:19:28 24 4
gpt4 key购买 nike

我需要获取接口(interface)的属性以确保它们与实现它的对象相匹配。用于单元测试目的。

因此,如果对接口(interface)进行了更改,如果未使用新成员进行更新,则单元测试应该会中断。

我试过使用 ts-transformer-keys 包,但它会抛出一个关于不是函数的错误。

   interface Test {
mem1: boolean,
mem2: string
}

我想做这样的事情:

   console.log(Object.keys(Test))

期待

   ['mem1', 'mem2'];

最佳答案

接口(interface)在运行时不存在,因此不可能在运行时从接口(interface)中提取任何信息。您可以创建一个具有界面所有键的对象。编译器将强制您指定所有键并检查是否存在额外的键,因此复制永远不会与界面不同步:

interface Test {
mem1: boolean,
mem2?: string
}


function interfaceKeys<T>(keys: Record<keyof T, 1>) {
return Object.keys(keys) as Array<keyof T>
}

console.log(interfaceKeys<Test>({
mem1: 1,
mem2: 1
}))

console.log(interfaceKeys<Test>({ // error
mem1: 1,
}))

console.log(interfaceKeys<Test>({
mem1: 1,
mem2: 1,
mem3: 1, // error
}))

play

关于angular - 如何使用 TypeScript 提取接口(interface)的属性(最好没有第 3 方库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57768494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com