Is the optional notation (?) describe a type as being any | undefined or any | null or either? In the following, it seems it is for both but I could not find if this is officially the case:
type MyType = {
prop1?: string;
prop2: string | null;
}
const something: MyType = { prop2: null };
something.prop1?.toString();
something.prop2?.toString();
Does optional really mean any | null | undefined? By any I mean generically any type.
>Solution :
? has multiple meanings in typescript (and in javascript for that matter). In a typescript type, ? means the property might be undefined. null plays no role in this. The following line is an example of ? in a type:
type MyType = {
prop1?: string; // similar to prop1: string | undefined
}
In javascript code (and thus typescript code inherits this syntax), ?. is the optional chaining operator. It’s similar to accessing a property via ., except it will short circuit evaluation if the value is null or undefined. Note that this is never a ? on its own, it’s always combined with a ., and it’s always in code not types.
The following is an example of ?. in code:
something.prop1?.toString();