【问题标题】:How to ensure value type when defining an object in typescript?在打字稿中定义对象时如何确保值类型?
【发布时间】:2020-08-01 07:11:54
【问题描述】:

所以我正在导出这个界面

 export interface Answer {
    file: string;
    provider: string;
   }

我想确保以下对象使用此类型的数组作为其答案键...类似于:

import {Answer} from ../models/answer.ts

const obj = {
   name:"blala",
   answers: Answer[]: [{"file":"dsfsfd","provider":"dsfjsn"}]
}

显然,上面的语法不正确...我该如何解决?如何在不为 obj 创建类型/接口的情况下确保答案字段为 Answer[]?

【问题讨论】:

  • 如果 obj 没有类型或接口,则它是隐含的。这么短:你不能

标签: typescript


【解决方案1】:

如果你真的不想为此创建一个可重用的接口/类型,你可以像这样即时键入它:

const obj: {name:string, answers:Answer[]} = {

}

但是我知道为什么你不想只创建一个类型

【讨论】:

    【解决方案2】:

    如果您真的不想为此使用接口或类型,则可以将值类型转换为 Answer[]

    import {Answer} from ../models/answer.ts
    
    const obj = {
       name:"blala",
       answers: <Answer[]>[{"file":"dsfsfd","provider":"dsfjsn"}]
    }
    

    【讨论】:

    • 这样你会失去类型安全
    • @DamianGreen 在我看来,他只是想创建一个使用此模式的一次性对象。他可以键入 cast 或使用 bryan60 答案中的方法。在这两种情况下,智能感知和类型检查都将起作用。如果您尝试将 obj.answers 更改为另一种类型,编译器将抛出错误。
    猜你喜欢
    • 2021-09-27
    • 2019-01-02
    • 2021-12-16
    • 2015-11-06
    • 2018-02-22
    • 2016-12-25
    • 2017-01-16
    • 2020-08-02
    • 1970-01-01
    相关资源
    最近更新 更多