【问题标题】:Does property? mean that the property can be null or undefined on class instances?有财产吗?意味着该属性在类实例上可以为空或未定义?
【发布时间】:2018-08-04 20:22:01
【问题描述】:

对于这个打字稿界面:

    export interface Person {
    phone?: number;
    name?: string;
}

这是否意味着接口的类实例上的 name 属性可以为 null 或未定义?

例如this post 提出了一个类似的问题,表明它使参数成为可选的。但是在接口的上下文中可选是什么意思呢?例如假设我有一个实现接口的类:

class Customer implements Person {
} 

我现在是否正确实现了 Person,因为 Person 接口上的所有属性都是可选的?

【问题讨论】:

    标签: javascript typescript


    【解决方案1】:

    这是否意味着接口的类实例上的 name 属性可以为 null 或未定义?

    是的,就是这个意思。

    但是在接口的上下文中可选是什么意思呢?

    表示无需设置所有属性即可实现接口。

    这是一个例子。

    interface Person{
        name?: string;
        age?: number;
    }
    
    var b: Person = { name: 'Bob' }; // OK
    var c: Person = { name: 'Bob', age: undefined }; // OK
    var d: Person = { name: null, age: 'bob' }; // Not OK, age must be a number
    

    class SomePerson implements Person{
        public name = 'Bob';
    }
    

    class SomeOtherPerson implements Person{
    
    }
    

    【讨论】:

      【解决方案2】:

      Here 是您要查找的文档。

      可选属性的优点是您可以描述这些可能可用的属性,同时还可以防止使用不属于接口的属性。

      是的,你用你的Customer 类正确地实现了Person

      【讨论】:

        猜你喜欢
        • 2021-05-04
        • 1970-01-01
        • 2015-07-16
        • 2015-09-13
        • 2019-08-30
        • 2018-09-05
        • 2021-07-17
        • 2017-08-28
        • 2021-03-18
        相关资源
        最近更新 更多