当前位置: 首页 > 知识库问答 >
问题:

Typescript接口默认值

谷梁翰飞
2023-03-14
interface IX {
    a: string,
    b: any,
    c: AnotherType
}

我声明了一个该类型的变量,并初始化了所有属性

let x: IX = {
    a: 'abc',
    b: null,
    c: null
}

然后我稍后在一个init函数中为它们赋值实数

x.a = 'xyz'
x.b = 123
x.c = new AnotherType()

但我不喜欢在声明对象时为每个属性指定一组缺省空值,因为它们稍后将被设置为实值。我能告诉接口将我不提供的属性默认为null吗?什么会让我这么做:

let x: IX = {
    a: 'abc'
}

而不会得到编译器错误。现在它告诉我

TS2322:类型“{}”不能分配给类型“ix”。类型“{}”中缺少属性“b”。

共有1个答案

潘雅珺
2023-03-14

我能告诉接口将我不提供的属性默认为null吗?什么会让我这么做

否。不能为接口或类型别名提供默认值,因为它们仅在编译时使用,并且默认值需要运行时支持

但在JavaScript运行时中未指定的值默认为undefined。因此您可以将它们标记为可选:

interface IX {
  a: string,
  b?: any,
  c?: AnotherType
}
let x: IX = {
    a: 'abc'
};
x.a = 'xyz'
x.b = 123
x.c = new AnotherType()
 类似资料:
  • 我有一个这样的界面 我想做的是当这个接口所涉及的对象被存储时,将默认为。 我尝试了,但这不起作用。 我确信我在这里做错了什么,并且非常感谢关于我如何实现这一点的一些反馈。

  • 本文向大家介绍Kotlin 与默认实现接口,包括了Kotlin 与默认实现接口的使用技巧和注意事项,需要的朋友参考一下 示例 Kotlin中的接口可以具有功能的默认实现: 实现此类接口的类将能够使用这些功能而无需重新实现 物产 默认实现也适用于属性获取器和设置器: 接口访问器实现不能使用后备字段 多种实现 当多个接口实现相同的功能,或者所有接口都定义一个或多个实现时,派生类需要手动解析正确的调用

  • 主要内容:TypeScript,JavaScript,联合类型和接口,TypeScript,JavaScript,接口和数组,实例,实例,TypeScript,接口继承,TypeScript,JavaScript,TypeScript,JavaScript接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法。 TypeScript 接口定义如下: 实例 以下实例中,我们定义了一个接口 IPe

  • 问题内容: 向所有Java专家致敬! 从Java8开始,我们可以在接口中使用默认实现(是的!)。但是,当您想从默认方法登录时会出现问题。 我有种感觉,每次我想在默认方法中记录某些内容时都调用.getLogger()是不明智的。 是的,可以在接口中定义静态变量-但这对于接口而言不是一个好习惯,而且+暴露了记录器(必须是公开的)。 我目前的解决方案: LogHolder仍然对所有人可见,这实际上没有任

  • 问题内容: 考虑以下情况, 在上面的例子中我得到以下输出这是 相当 期待。 我一直在阅读有关默认方法的信息, 尤其是 关于扩展包含默认方法的接口的信息 2 第二子弹:重新声明的默认方法,这使得它的抽象。 在上面的示例中,我有两个接口的默认方法具有相同的名称,并且当我实现这两个接口时,我只能实现对的引用。 我对此几乎没有疑问, 我怎样才能 到达 的方法 和 如果我不能比,为什么? 没有这种行为从本质