#typescript #typescript-generics
#typescript #типичный тип typescript
Вопрос:
Я пытаюсь изучить общие типы typescript, но не смог понять разницу между этими двумя типами:
type A<T> = (x: T) => T;
type B = <T>(x: T) => T;
Я нашел только одно видео на yt, но, к сожалению, этого было недостаточно, чтобы мой мозг понял…
Есть ли у any1 простое объяснение? Спасибо!
Ответ №1:
При type A<T> = (x: T) => T;
использовании типа, например, должен быть передан общий тип:
// here a is (c: string) => string;
let a: A<string> = x => x;
// a only accept string
a('foo')
С type B = <T>(x: T) => T;
общим передается при вызове функции:
// no generic yet
let b: B = x => x;
// here b is (x: number) => number;
b<number>(42);
// here b is (x: boolean) => boolean;
b<boolean>(true);
// you can omit the generic since TS will infer it
// here b is (x: string) => string;
b('hello')