¿Cuál es la palabra reservada "tipo" en TypeScript?
keyword reserved-words (2)
Escriba la palabra clave en mecanografiado:
En typecript, la palabra clave type define un alias para un tipo. También podemos usar la palabra clave type para definir tipos definidos por el usuario. Esto se explica mejor a través de un ejemplo:
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;
Puede componer tipos de tipos escalares (
string
,
number
, etc.), pero también de valores literales como
1
o
''mystring''
.
Incluso puede componer tipos de otros tipos definidos por el usuario.
Por ejemplo, tipo de
madness
que tiene los tipos
random
y
color
.
Luego, cuando intentamos hacer que una cadena sea literal nuestra (y tenemos inteligencia en nuestro IDE), muestra sugerencias:
Muestra todos los colores, cuyo tipo de locura se deriva de tener tipo de color, ''aleatorio'' que se deriva del tipo aleatorio, y finalmente la cadena
''foo''
que está en el tipo de locura.
Me acabo de dar cuenta al intentar crear una interfaz en TypeScript que "escribir" es una palabra clave o una palabra reservada. Al crear la siguiente interfaz, por ejemplo, "tipo" se muestra en azul en Visual Studio 2013 con TypeScript 1.4:
interface IExampleInterface {
type: string;
}
Digamos que luego intentas implementar la interfaz en una clase, así:
class ExampleClass implements IExampleInterface {
public type: string;
constructor() {
this.type = "Example";
}
}
En la primera línea de la clase, a medida que escribe (lo siento) la palabra "tipo" para implementar la propiedad requerida por la interfaz, IntelliSense aparece con "tipo" con el mismo icono que otras palabras clave como "typeof" o "new ".
He echado un vistazo y pude encontrar este problema de GitHub que enumera "tipo" como "palabra reservada en modo estricto" en TypeScript, pero no he encontrado más información sobre cuál es su propósito.
Sospecho que estoy teniendo un pedo cerebral y esto es algo obvio que ya debería saber, pero ¿para qué es la palabra reservada "tipo" en TypeScript?
Se utiliza para "alias de tipo". Por ejemplo:
type StringOrNumber = string | number;
type DictionaryOfStringAndPerson = Dictionary<string, Person>;
Referencia: Especificación de TypeScript v1.5 (sección 3.9, "Alias de tipo", páginas 46 y 47)
Actualización : ahora en la sección 3.10 de la especificación 1.8 . Gracias @RandallFlagg por la especificación actualizada y el enlace
Actualización : Manual de TypeScript , la búsqueda de "Alias de tipo" puede llevarlo a la sección correspondiente.