【发布时间】:2019-05-10 15:45:46
【问题描述】:
我正在为打字稿前端/后端应用程序定义一个 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 旨在返回 string 或 number
【问题讨论】:
-
您可以使用映射类型
type FilteredRequest<T> = { [key in keyof T]: any; }或使用Record:type FilteredRequest<T> = Record<keyof T, any>
标签: typescript