首页 > 解决方案 > 带有通用键的打字稿界面

问题描述

我正在为打字稿前端/后端应用程序定义一个 api。

现在我想编写一个接口,它允许包含在另一个接口中定义的所有可用键,前缀为filter.

假设我有一个用户界面

interface User {
  firstname: string;
  lastname: string;
}

可以过滤用户请求,所以我的一般请求是用 FilteredRequest 扩展的

interface FilteredRequest<T> {
  [key: 'filter.' + keyof T]: any;
}

这可以用打字稿吗?


好的,因为现在这是不可能的。

也不用 someting 为键添加前缀也不起作用

interface FilteredRequest<T> {
  [key: keyof T]: any;
}

An index signature parameter type must be 'string' or 'number'.ts(1023)

但是 keyof 旨在返回一个stringnumber

标签: typescript

解决方案


不幸的是,这在当前 (3.4.5) 版本的 Typescript 中是不可能的。

此功能正在 github 问题上进行辩论。


推荐阅读