1. 非 null アサーション演算子 (!)
型を判断できない場合は、後置式演算子を使用して、!
操作オブジェクトが非型であるnull
か非undefined
型であるかを判断できます。
具体的には、たとえば、式: x! の場合、結果は x 値の範囲から null と未定義を除外します。
(1). 値を割り当てるときは、null と未定義を無視します。
function test(name: string | undefined | null) {
// Type 'string | null | undefined' is not assignable to type 'string'.
// Type 'undefined' is not assignable to type 'string'.
const onlyStringName: string = name; // error
const ignoreUndefinedAndNullName: string = name!; // Ok
}
(2) 関数呼び出し時にnullとunknownを無視する
type CallBackString = () => string;
function test(call: CallBackString |null| undefined) {
// Object is possibly 'undefined'.
// Cannot invoke an object which is possibly 'undefined'.
const onlyStringName = call(); // Error
const ignoreUndefinedAndNullName = call!(); //OK
}
2. オプションのチェーン演算子 (?.)
?.
演算子関数はチェーン演算子に似ています。違いは、参照が空 (または).
の場合にエラーが発生しないことです。指定された値が存在しない場合は、その値が直接返されます。null
undefined
undefined
例えば:
const obj = {
project: {
dir: {
file: "name",
},
},
};
const file = obj?.project?.dir?.file; // name
const test = obj?.other?.dir; // undefined
3. 空値結合演算子(??)と論理和演算子(||)
左オペランドがnull
または の場合はundefined
右オペランドが返され、それ以外の場合は左オペランドが返されます。
false
null 合体演算子は、左側のオペランドが値の場合に右側のオペランドを返す論理 OR || 演算子とは異なります。
例えば:
const file = null ?? 'dir'; // dir
const num = 0 ?? 20; // 0
const num1 = 0 || 20; // 20
4. オプションの属性演算子 (?:)
インターフェースを宣言するには、interface キーワードを使用します。
interface Student {
name: string;
age: number;
gender:number;
}
この時点でインターフェイスを定義します。パラメータが不足している場合は、エラーが報告されます。
let student: Student = {
name: "name1"
age:12
}; //Error
この時点で、オプションの属性を使用して再度定義します。
interface Student {
name: string;
age: number;
gender?:number;
}
let student: Student = {
name: "name1"
age:12
}; //ok
5. 演算子 (&)
& 演算子を使用すると、複数のタイプを重ね合わせて 1 つのタイプに結合できます。
次のように:
type Pointx = {
x: number; };
type Ponity = {
y: number; };
type Point = Pointx & Ponity;
let point: Point = {
x: 1, y: 1 }
6. 演算子 (|)
TypeScript では、共用体型は、値が複数の型の 1 つであることを示します。共用体型は通常、null または unknown と一緒に使用されます。
演算子 (|) は、共用体型を宣言するときに各型を区切るためによく使用されます。
const fun = (info:string | null | undefined) => {
}
7. 数字区切り文字 (_)
アンダースコアを区切り文字として使用して、数値をグループ化できます。
const number1 = 1234_5678
// 等价
const number2 = 12345678;