У меня есть интерфейс и класс с конструктором, который получает свойство, основанное на заданном типе generi c:
export enum AccountTypesEnum {
Accounts= "Accounts",
}
export interface AccountTypes {
[AccountTypesEnum.Accounts]: "/foo" | "/bar" | "/baz",
}
class Account<T extends AccountTypesEnum> extends Resource {
public constructor(endpoint: AccountTypes[T]) {
// ...ommited
При создании экземпляра класса Account
я ожидаю, что редактор покажет мне возможные endpoint
значения, если я передам AccountTypesEnum.Accounts
как его родовой c тип:
new Account<AccountTypesEnum.Accounts>(/* AUTOCOMPLETE_HERE: /foo, /bar or /baz */ )
- Если я наведу курсор мыши на
Account
, я вижу, что возможные значения для аргумента действительно один из тех, что я указал. - Если я введу что-либо, отличное от трех значений, IntelliJ покажет мне ошибку TS
- Если я попытаюсь использовать функцию автозаполнения, она WON'T покажет мне одно из трех возможных значений.
Я не пробовал в других редакторах, кроме IntelliJ, поэтому я не уверен, что это TypeScript или IDE.