javascript - objetos - typescript date
¿Cómo declarar un tipo como anulable en TypeScript? (4)
El tipo de unión es, en mi opinión, la mejor opción en este caso:
interface Employee{
id: number;
name: string;
salary: number | null;
}
// Both cases are valid
let employe1: Employee = { id: 1, name: ''John'', salary: 100 };
let employe2: Employee = { id: 1, name: ''John'', salary: null };
Tengo una interfaz en TypeScript.
interface Employee{
id: number;
name: string;
salary: number;
}
Me gustaría hacer ''salario'' como un campo con nulo (como lo podemos hacer en C #). ¿Es esto posible en TypeScript?
Solo agrega un signo de interrogación ?
al campo opcional.
interface Employee{
id: number;
name: string;
salary?: number;
}
Todos los campos en JavaScript (y en TypeScript) pueden tener el valor null
o undefined
.
Puede hacer que el campo sea opcional, que es diferente de anulables.
interface Employee1 {
name: string;
salary: number;
}
var a: Employee1 = { name: ''Bob'', salary: 40000 }; // OK
var b: Employee1 = { name: ''Bob'' }; // Not OK, you must have ''salary''
var c: Employee1 = { name: ''Bob'', salary: undefined }; // OK
var d: Employee1 = { name: null, salary: undefined }; // OK
// OK
class SomeEmployeeA implements Employee1 {
public name = ''Bob'';
public salary = 40000;
}
// Not OK: Must have ''salary''
class SomeEmployeeB implements Employee1 {
public name: string;
}
Comparar con:
interface Employee2 {
name: string;
salary?: number;
}
var a: Employee2 = { name: ''Bob'', salary: 40000 }; // OK
var b: Employee2 = { name: ''Bob'' }; // OK
var c: Employee2 = { name: ''Bob'', salary: undefined }; // OK
var d: Employee2 = { name: null, salary: ''bob'' }; // Not OK, salary must be a number
// OK, but doesn''t make too much sense
class SomeEmployeeA implements Employee2 {
public name = ''Bob'';
}
tuve la misma pregunta hace un tiempo ... todos los tipos en ts son nulables, porque el vacío es un subtipo de todos los tipos (a diferencia, por ejemplo, Scala).
ver si este diagrama de flujo ayuda - https://github.com/bcherny/language-types-comparison#typescript