@wb_by
Учусь

Как сделать правильную проверку типа?

Есть такой код
const installed = window.getOfflineSigner && window.keplr 

const enable = () => {
  if (installed) return window.keplr.enable(chainId)
}


Keplr - это расширение браузера, поэтому мне нужно проверить установлено ли оно. Тк Installed это просто bool ts не понимает, что в window есть keplr. Если передавать полное условие, то все работает как надо. Но хотелось бы не писать это везде. Как сделать подобный код рабочим? Естественно без оператора ! после keplr.
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
bingo347
@bingo347 Куратор тега TypeScript
Crazy on performance...
https://www.typescriptlang.org/docs/handbook/2/nar...
type Keplr = {
  enable(chainId: ChainId): Enable;
};
const isInstalled = (v: unknown): v is Keplr => !!(window.getOfflineSigner && v) 

const enable = () => {
  if (isInstalled(window.keplr)) return window.keplr.enable(chainId)
}


Ну или дождаться релиза 4.4 или перейти на бету:
https://devblogs.microsoft.com/typescript/announci...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы