In TypeScript there are several ways to declare a property with ...
In TypeScript there are several ways to declare a property with undefined value: adding | undefined in the property type or using optional property syntax (? after its name). Use | undefined syntax when you want to be explicit that an object has that property, in that case TypeScript compiler will not allow omitting it: interface Person {
name: string; address: string | undefined; }
let John = { name: "John" }; // will not compile let John = { name: "John", address: undefined }; // will compile, we want to be explicit when person does not have home
Use optional property syntax for properties holding some additional information.
interface Person { name: string; pet?: string;
}
let John = { name: "John" }; // will compile let John = { name: "John", pet: undefined }; // will compile, there is no pet like for the object on previous line let John = { name: "John", pet: "Benji" }; // will compile
Using | undefined for optional property is redundant, it can be omitted without change to the actual type. Still if you want to force the property in the object consider using only | undefined without ?.
Noncompliant Code Example
interface Person { name: string; address? : string | undefined; // Noncompliant, "?" should be removed pet?: Animal | undefined; // Noncompliant, "undefined" should be removed
}
Compliant Solution
interface Person { name: string;
address: string | undefined; pet?: Animal; }
When defining a type in TypeScript, we can specify that a property is optional with a question mark after the name:
Or we can specify that a property may be undefined:
These two interfaces seem nearly identical. In either case, accessing the property foo may return the value undefined. They are subtly different, though, as evidenced by the fact that TypeScript won't actually allow us to assign InterfaceWithOptional to InterfaceWithUndefined:
TypeScript reports:
Type `InterfaceWithOptional' is not assignable to type `InterfaceWithUndefined'. Property `foo' is optional in type `InterfaceWithOptional' but required in type `InterfaceWithUndefined'.ts(2322)
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related download
Related searches
- ways to market a product
- ways to get a loan
- best ways to finance a car
- ways to buy a car
- ways to purchase a car
- good ways to start a conclusion paragraph
- ways to promote a product
- ways to finance a car
- creative ways to finance a car
- ways to market a book
- creative ways to present a project
- ways to become a writer