1. ホーム
  2. タイプスクリプト

[解決済み】TypeScriptで型をnullableとして宣言する方法は?

2022-03-25 14:14:28

質問

TypeScriptでインターフェースを持っています。

interface Employee{
    id: number;
    name: string;
    salary: number;
}

を作りたいのですが。 salary をヌル可能なフィールドとして使用することができます (C#でできるような)。これはTypeScriptで可能なのでしょうか?

どのように解決するのですか?

JavaScript(およびTypeScript)のすべてのフィールドは、値として null または undefined .

フィールドを 任意 これは nullable とは異なります。

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;
}

と比較してください。

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';
}