Что означает `const func: (num: number) => string = String;` в TypeScript? - PullRequest
0 голосов
/ 21 февраля 2019

Я читаю блог 2ality на TypeScript , и я наткнулся на следующий код -

const func: (num: number) => string = String;

Я не понимаю смысла этого синтаксиса.

В TypeScript Playground он компилируется в -

var func = String;

Насколько я понимаю, func - это функция, которая принимает параметр num, а сама функция возвращает string и переменная func присваивается String, поэтому вся функция функции становится бесполезной, что означает, что вышеприведенная вещь могла быть написана так просто, как -

const func = String;

Я прав?Или я неправильно понимаю Typescript?

Ответы [ 3 ]

0 голосов
/ 21 февраля 2019

В основном говорится, что func - это функция (обозначается x => y), которая принимает переменную с именем num типа number в качестве входных данных и возвращает string.В этом случае значение функции присваивается функции String, которая является функцией конструктора.

В конце func - это новое имя, присвоенное Stringконструктор такой, что он принимает только числовой ввод.Так что func(5) будет эквивалентно String(5) и вернет "5".

Обратите внимание, что строка (num: number) => string обозначает схему объявленной функции.

0 голосов
/ 21 февраля 2019

Это функция, которая преобразует переданный Number в String.

Вы можете видеть, что при вводе следующего TypeScript:

const func: (num: number) => string = String;
console.log(func(123));
console.log(typeof func(123));
console.log(typeof 123);

Он компилируется в:

var func = String;
console.log(func(123));
console.log(typeof func(123));
console.log(typeof 123);

И выполнение этого кода показывает 123, string и number:

var func = String;
console.log(func(123));
console.log(typeof func(123));
console.log(typeof 123);

Итак, func в приведенном выше примере возвращает new String(num), поэтому 123 - это число, а func(123) - это строка.

0 голосов
/ 21 февраля 2019

const func: (num: number) => string = String;

Это означает, что существует переменная func, тип которой (num: number) => string со значением в качестве класса String.

Теперь строковый конструктор принимает значение и возвращает строковое значение.


Для людей, которые путаются между string и String

  • string: относится к строковому значению.Так () => string означает функцию, возвращающую строку.В var a = 'abc' a - строка
  • String: заглавная буква S.Это относится к строковому конструктору, который является функцией.

Ниже приведено определение String: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...