Можно ли написать интерфейс, который принимает строковую константу в качестве одного из своих параметров и использует ее в качестве ключа объекта?
Например, предполагая, что я делаю два разных запроса 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>
Но, этоне работает .