У меня есть интерфейс, который предназначен для типов, которые могут преобразовывать себя в IDBKey
:
interface IDBValidKeyConvertible<TConvertedDBValidKey extends IDBValidKey> {
convertToIDBValidKey: () => TConvertedDBValidKey;
}
Затем у меня есть класс, который я хочу принять, тип IDBKey
или IDBValidKeyConvertible
:
class InMemoryIndexedKeyValueStore<TKey extends IDBValidKey | IDBValidKeyConvertible<UKey>, TValue> {
public constructor(public readonly storeName: string) { }
private getDbKeyFromKey(key: TKey): TKey | UKey {
return isIDBValidKeyConvertible(key) ? key.convertToIDBValidKey() : key;
}
...
}
Но это не работает так, как написано, потому что tsc
дает эту ошибку около UKey
в объявлении класса: Cannot find name 'UKey'
Это из-за this Проблема с TypeScript, когда универсальные типы не могут быть «высокодородными типами»? Или я еще что-то не так делаю?
Спасибо!