Типичный тип Typescript левая сторона против правой стороны функции

#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')