微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Javascript-我必须使用接口来定义带有打字稿的对象的元素吗?

我可以做这个:

var a: number = 99;

但是如何定义它在对象内部的时间:

var ob = { a: 99 }

要么

class AClass {

    ob = { a: 99 };

    constructor() {
    }

}

是使用接口执行此操作的唯一方法吗?

解决方法:

不需要接口.如果只想定义对象的“形状”,而没有显式的类/接口声明,则可以这样进行:

var ob:{a:number} = {a:99};

在您的课程示例中,它看起来像这样:

class AClass {

    ob: { a:number } = { a: 99 };

    constructor() {
      // tsc kNows that this.ob.a is of type number
    }

}

这也适用于复杂的对象:

    var ob: {
        a:number;
        b: {
            stringVal:string;
            numero:number;
            bitflag:Boolean
        }
    } = {
        a: 99,
        b: {
            stringVal: "Some string value here",
            numero:1234,
            bitflag:true
        }
    };

此语法在函数声明中非常有用,在函数声明中,您知道期望的对象具有特定的属性

function(someObject: {stringVal:string; numero:number})
    // TypeScript Now kNows that someObject will have a "stringVal" string property, and a "numero" number property
}

话虽如此,我鼓励您仔细考虑一下接口是否更适合.如果这是一个简单的对象形状,并且不会重复出现,请声明内嵌形状(如上所述)可能很好,但是如果您要在其他地方使用具有相同形状的对象,则可以将其声明为接口可能很有意义,那么您可以重新使用该接口.如果您正在使用一个复杂的对象,它要深入很多层次,那么这是双重事实.尝试全部内联都可能很难看.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐