objects - Definición de tipo en literal de objeto en TypeScript
typescript array push (4)
En TypeScript en la clase es posible declarar el tipo de propiedad, por ejemplo:
class className{
property : string;
};
¿Cómo debo escribir el código para declarar el tipo de propiedad en el objeto literal? Tal código no compila:
var obj = {
property: string;
};
(Estoy recibiendo un error: el nombre ''cadena'' no existe en el ámbito actual).
¿Qué estoy haciendo mal o es un error?
En mecanografiado si estamos declarando objeto entonces
[modificador de acceso] nombre de la variable: {// estructura del objeto}
private Object:{Key1:string , Key2:number }
Estás bastante cerca, solo necesitas reemplazar el =
con un :
Puede usar un tipo de objeto literal (vea la sección de especificaciones 3.5.3) o una interfaz. Usar un tipo de objeto literal está cerca de lo que tienes:
var obj: { property: string; } = { property: "foo" };
Pero también puedes usar una interfaz
interface MyObjLayout {
property: string;
}
var obj: MyObjLayout = { property: "foo" };
Si está intentando escribir una anotación de tipo, la sintaxis es:
var x: { property: string; } = ...;
Si está intentando escribir un objeto literal, la sintaxis es:
var x = { property: ''hello'' };
Su código está tratando de usar un nombre de tipo en una posición de valor.
Utilice el operador de yeso para hacer esto sucinto (mediante el lanzamiento nulo al tipo deseado).
var obj = {
property: <string> null
};
Un ejemplo más largo:
var call = {
hasStarted: <boolean> null,
hasFinished: <boolean> null,
id: <number> null,
};
Esto es mucho mejor que tener dos partes (una para declarar tipos, la segunda para declarar valores predeterminados):
var callVerbose: {
hasStarted: boolean;
hasFinished: boolean;
id: number;
} = {
hasStarted: null,
hasFinished: null,
id: null,
};
Actualización 2016-02-10 - Para manejar TSX (Gracias @Josh)
Utilice el operador as para TSX.
var obj = {
property: null as string
};
Un ejemplo más largo:
var call = {
hasStarted: null as boolean,
hasFinished: null as boolean,
id: null as number,
};