Wygląda na to, że mój typ pracuje zgodnie z oczekiwaniami. Następnie może zadowolić, aby ktoś pomógł mi wyjaśnić błąd, dostaję w swojej definicji i jak go naprawić? Nie mogę znaleźć rozwiązania.

export enum Languages {
  Cs = 'cs',
  Sk = 'sk',
  En = 'en'
}

export type RouteDefinitionItem<T> = {
  name: string;
  pathname: { [index in T]: string };
  page: string;
};

const routes: RouteDefinitionItem<Languages>[] = [
  {
    name: 'home',
    pathname: {
      cs: '/',
      en: '/en',
      sk: '/sk'
    },
    page: '/home'
  }
];

Błąd:

Type 'T' is not assignable to type 'string | number | symbol'.
  Type 'T' is not assignable to type 'symbol'.

Link do placów zabaw typu.

Z góry dziękuję.

1
Tomáš Vavřinka 20 październik 2020, 14:43

1 odpowiedź

Najlepsza odpowiedź
export enum Languages {
    Cs = 'cs',
    Sk = 'sk',
    En = 'en'
}



export type RouteDefinitionItem<T extends keyof any > = {
    name: string;
    pathname: Record<T,string>;
    page: string;
};

const routes: RouteDefinitionItem<Languages>[] = [
    {
        name: 'home',
        pathname: {
          'cs':'',
          'en':'',
          'sk':''
        },
        page: '/home'
    }
];

Zaktualizowany.

1
lei li 20 październik 2020, 12:44