• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Sprawdzanie typu - Typescript

Cloud VPS
+1 głos
264 wizyt
pytanie zadane 15 maja 2022 w JavaScript przez Bakkit Dyskutant (7,600 p.)
zamknięte 16 maja 2022 przez Bakkit

Cześć mam taki typ:

type TYP = 'STRING_1' | 'STRING_2' | 'STRING_3';

Oraz zmienną typu string o nazwie 

jakas_zmienna

Jak mogę sprawdzić czy typ tej zmiennej pasuje do typu TYP?

 

Oczekuję takiego rezultatu:

if (warunek sprawdzający tym) {
    // wykonuje jakąś akcje
}

 

komentarz zamknięcia: https://forum.pasja-informatyki.pl/566407/sprawdzanie-typu-typescript?show=566409#a566409

1 odpowiedź

+4 głosów
odpowiedź 15 maja 2022 przez Wiciorny Ekspert (281,450 p.)
wybrane 16 maja 2022 przez Bakkit
 
Najlepsza

Nie można używać samego  typeof podczas wykonywania programu  do sprawdzania typów danego interfejsu, które istnieją tylko w czasie kompilacji. Zamiast tego możesz napisać funkcje która w tym pomoże 

const constValuesOfType = ['STRING_1', 'STRING_2' , 'STRING_3']
type TYPE = (typeof constValuesOfType)[number];
const isYourType = (x: any): x is TYPE => constValuesOfType.includes(x);

if (isYourType(twoja_zmienna)) {
  // cos 
}

https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates

1
komentarz 16 maja 2022 przez Bakkit Dyskutant (7,600 p.)
Działa, muszę się jeszcze nieco podszkolić z TypeScript'a.

Dziękuję bardzo.

Podobne pytania

0 głosów
1 odpowiedź 347 wizyt
0 głosów
0 odpowiedzi 159 wizyt
pytanie zadane 4 października 2023 w JavaScript przez reaktywny Nałogowiec (46,230 p.)
0 głosów
0 odpowiedzi 651 wizyt
pytanie zadane 7 września 2022 w JavaScript przez niezalogowany

93,460 zapytań

142,454 odpowiedzi

322,724 komentarzy

62,838 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...