Инструменты пользователя

Инструменты сайта


typescript:types:literal

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

typescript:types:literal [2023/01/29 20:09]
werwolf создано
typescript:types:literal [2023/01/29 20:10] (текущий)
werwolf
Строка 7: Строка 7:
 Вы можете использовать строковый литерал в качестве типа. Например:​ Вы можете использовать строковый литерал в качестве типа. Например:​
  
-<​code>​+<​code ​javascript>
 let foo: '​Hello';​ let foo: '​Hello';​
 </​code>​ </​code>​
Строка 13: Строка 13:
 Здесь мы создали переменную с именем ''​foo'',​ которая позволяет присваивать ей только литеральное значение '''​Hello'''​. Это продемонстрировано ниже: Здесь мы создали переменную с именем ''​foo'',​ которая позволяет присваивать ей только литеральное значение '''​Hello'''​. Это продемонстрировано ниже:
  
-<​code>​+<​code ​javascript>
 let foo: '​Hello';​ let foo: '​Hello';​
 foo = '​Bar';​ // Ошибка:​ "​Bar"​ нельзя назначить типу "​Hello"​ foo = '​Bar';​ // Ошибка:​ "​Bar"​ нельзя назначить типу "​Hello"​
Строка 20: Строка 20:
 Они не очень полезны сами по себе, но могут быть собраны в тип объединение для создания мощной (и полезной) абстракции,​ например:​ Они не очень полезны сами по себе, но могут быть собраны в тип объединение для создания мощной (и полезной) абстракции,​ например:​
  
-<​code>​+<​code ​javascript>
 type CardinalDirection = type CardinalDirection =
     | '​North'​     | '​North'​
Строка 42: Строка 42:
 TypeScript также поддерживает литеральные типы ''​boolean''​ и ''​number'',​ например:​ TypeScript также поддерживает литеральные типы ''​boolean''​ и ''​number'',​ например:​
  
-<​code>​+<​code ​javascript>
 type OneToFive = 1 | 2 | 3 | 4 | 5; type OneToFive = 1 | 2 | 3 | 4 | 5;
 type Bools = true | false; type Bools = true | false;
Строка 51: Строка 51:
 Как правило,​ вы получаете сообщение об ошибке:​ ''​Тип string не может быть назначен для типа "​foo"''​. Следующий пример демонстрирует это. Как правило,​ вы получаете сообщение об ошибке:​ ''​Тип string не может быть назначен для типа "​foo"''​. Следующий пример демонстрирует это.
  
-<​code>​+<​code ​javascript>
 function iTakeFoo(foo:​ '​foo'​) {} function iTakeFoo(foo:​ '​foo'​) {}
 const test = { const test = {
Строка 62: Строка 62:
 Это потому,​ что ''​test''​ подразумевает тип ''​{someProp:​ string}''​. Решением в этом случае было бы использование простого утверждения типа. Для того чтобы сообщить TypeScript литерал,​ который вы хотите,​ чтобы он выводил,​ как показано ниже: Это потому,​ что ''​test''​ подразумевает тип ''​{someProp:​ string}''​. Решением в этом случае было бы использование простого утверждения типа. Для того чтобы сообщить TypeScript литерал,​ который вы хотите,​ чтобы он выводил,​ как показано ниже:
  
-<​code>​+<​code ​javascript>
 function iTakeFoo(foo:​ '​foo'​) { } function iTakeFoo(foo:​ '​foo'​) { }
 const test = { const test = {
Строка 72: Строка 72:
 или используйте описание типа, которое поможет TypeScript понять правильный тип в точке объявления:​ или используйте описание типа, которое поможет TypeScript понять правильный тип в точке объявления:​
  
-<​code>​+<​code ​javascript>
 function iTakeFoo(foo:​ '​foo'​) {} function iTakeFoo(foo:​ '​foo'​) {}
 type Test = { type Test = {
Строка 92: Строка 92:
 [[.|Тип перечисление в TypeScript основан на числах]]. Вы можете использовать строковые литералы вместе с объединенными типами,​ чтобы сымитировать перечисление на основе строки,​ как мы это делали в примере ''​CardinalDirection''​ выше. Вы даже можете сгенерировать структуру ''​Key:​ Value'',​ используя следующую функцию:​ [[.|Тип перечисление в TypeScript основан на числах]]. Вы можете использовать строковые литералы вместе с объединенными типами,​ чтобы сымитировать перечисление на основе строки,​ как мы это делали в примере ''​CardinalDirection''​ выше. Вы даже можете сгенерировать структуру ''​Key:​ Value'',​ используя следующую функцию:​
  
-<​code>​+<​code ​javascript>
 /** Утилита для создания K:V из списка строк */ /** Утилита для создания K:V из списка строк */
 function strEnum<​T extends string>( function strEnum<​T extends string>(
Строка 106: Строка 106:
 А затем сгенерируйте тип объединение из литеральных типов, используя ''​keyof typeof''​. Вот полный пример:​ А затем сгенерируйте тип объединение из литеральных типов, используя ''​keyof typeof''​. Вот полный пример:​
  
-<​code>​+<​code ​javascript>
 /** Утилита для создания K:V из списка строк */ /** Утилита для создания K:V из списка строк */
 function strEnum<​T extends string>( function strEnum<​T extends string>(
typescript/types/literal.1675012173.txt.gz · Последние изменения: 2023/01/29 20:09 — werwolf