如何获取与 Typescript 中的接口匹配的对象的所有属性? [复制]

Posted

技术标签:

【中文标题】如何获取与 Typescript 中的接口匹配的对象的所有属性? [复制]【英文标题】:How to get all properties of an object that match an interface in Typescript? [duplicate] 【发布时间】:2021-06-26 00:08:05 【问题描述】:

假设我有一个具有一组不确定的键值对的对象和一个具有一组特定键类型对的接口。

我可以调用一个操作来从对象中获取与接口中的键匹配的所有键值对吗?

const foo = a: 1, b:2, c:3, d: 4

interface Bar 

   a: number;
   d: number;



const res = // is there an operation I can perform that will make this equal a:1, d:4

【问题讨论】:

这是不可能的;类型系统是来自已编译 javascript 的 erased,所以没有任何 Bar 可供您使用 res 做任何事情。如果您看到 this answer 到这个重复的问题,您可以看到一种可能的方法,您可以在其中创建一个运行时键数组,如果错误,您将收到编译器错误。如果我将该答案中的代码翻译为您的示例,我会得到this。 【参考方案1】:

我不知道你是否想对这个对象进行交互。 但是要得到这个结果,你可以这样做。

const foo = a: 1, b:2, c:3, d: 4

interface Bar 

   a: number;
   d: number;





const res: Bar =  a: foo["a"], d: foo["d"]

console.log(res);

【讨论】:

我假设 OP 想要一个动态/通用的解决方案。

以上是关于如何获取与 Typescript 中的接口匹配的对象的所有属性? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Typescript 中定义正则表达式匹配的字符串类型?

如何从 Typescript 中的正则表达式 exec 匹配访问组? [复制]

JSON数据如何变成Typescript接口

如何从 TypeScript 文件中的父级获取子组件变量和函数

java解析从接口获取的json内容并写到excle(只写与标题匹配的值,并非把所有的接口返回值都写进去)

如何根据 TypeScript 中的接口文件定义创建对象?