【发布时间】:2019-10-18 13:09:14
【问题描述】:
是否可以编写一个接受字符串常量作为其参数之一的接口,并将其用作对象的键?
例如,假设我发出两个不同的 GraphQL 请求,它们都返回 User,但使用不同的键名:
const userByIdResult = {
data: {
userById: {
id: 123,
username: 'joseph'
}
}
}
const userByUsernameResult = {
data: {
userByUsername: {
id: 123,
username: 'joseph'
}
}
}
我想写一个通用接口会是这样的:
interface GraphQLResponse<QueryKey, ResponseType> {
data: {
[QueryKey]: ResponseType
}
}
interface User {
username: string
id: string
}
type UserByIdResponse = GraphQLResponse<'userById', User>
type UserByUsernameResponse = GraphQLResponse<'userByUsername', User>
【问题讨论】:
标签: typescript typescript-generics