Что такое зарезервированное слово типа в TypeScript?

Я только что заметил, когда пытался создать интерфейс в TypeScript, что «тип» - это либо ключевое слово, либо зарезервированное слово. Например, при создании следующего интерфейса «тип» отображается синим цветом в Visual Studio 2013 с TypeScript 1.4:

interface IExampleInterface {
    type: string;
}

Допустим, вы затем пытаетесь реализовать интерфейс в классе, например:

class ExampleClass implements IExampleInterface {
    public type: string;

    constructor() {
        this.type = "Example";
    }
}

В первой строке класса, когда вы набираете (извините) слово «тип» для реализации свойства, требуемого интерфейсом, IntelliSense появляется с «типом», имеющим тот же значок, что и другие ключевые слова, такие как «typeof» или «new». ".

Я осмотрелся и нашел эту проблему GitHub, в которой "тип" указан как "строгий режим". зарезервированное слово "в TypeScript, но я не нашел дополнительной информации о том, какова его цель на самом деле.

Я подозреваю, что у меня пердит мозг, и это очевидно, что я уже должен знать, но для чего это зарезервированное слово «тип» в TypeScript?


person Adam Goodwin    schedule 12.07.2015    source источник
comment
Type Alias, чтобы дать вашим типам семантическое имя: basarat.gitbooks.io / typescript / content / docs / types /   -  person basarat    schedule 12.07.2015


Ответы (2)


Он используется для псевдонимов типов. Например:

type StringOrNumber = string | number;
type DictionaryOfStringAndPerson = Dictionary<string, Person>;

Ссылка: (правка: удалена устаревшая ссылка) Спецификация TypeScript v1.5 (раздел 3.9, Псевдонимы типов, стр. 46 и 47)

Обновление: (edit: удалена устаревшая ссылка) Теперь в разделе 3.10 спецификации 1.8. Спасибо @RandallFlagg за обновленную спецификацию и ссылку

Обновление: (изменить: устаревшая ссылка) Руководство по TypeScript, поиск по псевдонимам типа приведет вас в соответствующий раздел.

Обновление: теперь это здесь, в Руководство по TypeScript.

person Jcl    schedule 12.07.2015
comment
Ага, значит, это было что-то очевидное. Оказывается, довольно сложно найти то, что вы ищете, когда вы ищете слово type в контексте языков программирования, особенно когда рассматриваемый язык называется TypeScript. Кстати, универсальных словарей в TypeScript все еще нет, верно? - person Adam Goodwin; 12.07.2015
comment
Вот один, если он вам нужен (для TS 0.9 и выше): - person Jcl; 12.07.2015
comment
Спасибо, мне кажется, я уже однажды видел этот проект, когда мне нужен был словарь, но в конце концов я решил просто обойтись без него. - person Adam Goodwin; 12.07.2015
comment
концепция пришла из typedef в c проверьте это studytonight.com/c/typedef.php - person Pranoy Sarkar; 15.07.2018
comment
Первые две ссылки не работают. Пожалуйста, обновите, спасибо :) - person Serkan Sipahi; 16.09.2020
comment
@SerkanSipahi удалил устаревшие ссылки, но оставил текст для ясности. Спасибо :-) - person Jcl; 17.09.2020

Введите ключевое слово в машинописном тексте:

В машинописном тексте ключевое слово type определяет псевдоним типа. Мы также можем использовать ключевое слово type для определения пользовательских типов. Лучше всего это пояснить на примере:

type Age = number | string;    // pipe means number OR string
type color = "blue" | "red" | "yellow" | "purple";
type random = 1 | 2 | 'random' | boolean;

// random and color refer to user defined types, so type madness can contain anything which
// within these types + the number value 3 and string value 'foo'
type madness = random | 3 | 'foo' | color;  

type error = Error | null;
type callBack = (err: error, res: color) => random;

Вы можете составлять типы скалярных типов (string, number и т. Д.), Но также и буквальные значения, такие как 1 или 'mystring'. Вы даже можете составлять типы из других определяемых пользователем типов. Например, тип madness содержит типы random и color.

Затем, когда мы пытаемся сделать строковый литерал нашим (а в нашей IDE есть IntelliSense), он показывает предложения:

введите описание изображения здесь

Он показывает все цвета: безумие типов происходит из-за наличия цвета типа, «случайный» - от типа random и, наконец, строка 'foo', которая относится к самому безумию типов.

person Willem van der Veen    schedule 04.11.2018
comment
В чем разница между пользовательскими типами и перечисляемыми - person ORcoder; 13.09.2019
comment
@ORcoder хороший вопрос! Я тоже хочу знать. Хорошее объяснение, чтобы мы поняли! - person Merv; 29.09.2019
comment
где вы объявили операторы type color = "blue" | "red" | "yellow" | "purple"; внутри или вне класса? - person Lalit Kushwah; 29.11.2019
comment
Это может помочь в отношении разницы между пользовательскими типами и перечислениями. - person Christophe Fuzier; 27.08.2020