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

[TypeScript] Interface z narzuconym typem <T>

0 głosów
29 wizyt
pytanie zadane 3 dni temu w JavaScript przez Oskar Szkurłat Bywalec (2,140 p.)

Cześć, od niedawna stosuję TS i chciałbym zapytać, w jaki sposób mógłbym narzucić typ dla parametru generycznego (bo tak to się chyba nazywa?) <T>?
 

Tzn. chciałbym coś takiego zrobić:

type dxComponent = dxDataGrid | dxTreeList

export interface dxEventOnInitialized<T: dxComponent> {
component: T
element: HTMLElement
}

Czyli chciałbym narzucić możliwe typy dla <T>, tak żeby nie było to przypisywanie dowolnego typu. Da się jakoś to wykonać?

Z góry dziękuję :)

1 odpowiedź

+2 głosów
odpowiedź 3 dni temu przez ScriptyChris Mędrzec (171,400 p.)
wybrane 3 dni temu przez Oskar Szkurłat
1
komentarz 3 dni temu przez Oskar Szkurłat Bywalec (2,140 p.)

Kurczę, wcześniej już próbowałem z extends i myślałem, że źle robię. Ale faktycznie extends rozwiązuje problem, tylko TS mi nie podpowiada, jakiego typu jest <T> (po ctrl+space) - tylko po najechaniu na niego. Troszkę dziwne ;D ale zwraca błąd, gdy podam inny interface, więc jest ok.
 

import dxDataGrid from 'devextreme/ui/data_grid'
import dxTreeList from 'devextreme/ui/tree_list'

export interface dxIEventOnInitialized<T extends dxIComponentOnInitialized> {
  component: T
  element: HTMLElement
}

export type dxIComponentOnInitialized = dxDataGrid<any, any> | dxTreeList<any, any>

 

Dziękuję :)

Podobne pytania

+1 głos
2 odpowiedzi 44 wizyt
0 głosów
1 odpowiedź 74 wizyt
0 głosów
1 odpowiedź 57 wizyt
pytanie zadane 18 września 2021 w JavaScript przez Author[] Bywalec (2,830 p.)

86,401 zapytań

135,161 odpowiedzi

300,250 komentarzy

57,163 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...