在Typescript中的对象文字中指定值的类型?

瑞安·席尔瓦(Ryan Silva)

这是与TypeScript中对象文字中的Type定义不同的问题

我有一个接受任何对象作为其属性之一的接口:

interface MyType {
  /* ... */
  options: any;
}

虽然该属性options可以是任何东西,但有时我想指定某些类型。我不想使用'as'关键字,因为我不想强制它(如果我缺少属性,我想看到错误)。

这是我可以做到的一种方法:

interface MyTypeOptions {
  hasName: boolean;
  hasValue: boolean;
}

// Declare the options separately just so we can specify a type
const options: MyTypeOptions = {
  hasName: false,
  hasValue: true
};

const myType: MyType = {
  /* ... */
  options
}

但是有没有一种方法可以在myType不使用类型断言的情况下将选项保持在对象文字内联的同时呢?换句话说,我想这样做:

const myType: MyType = {
  /* ... */
  // I want to type-check that the following value is of type MyTypeOptions
  options: {
    hasName: false,
    hasValue: true
  } 
}
提香·切尔尼科娃·德拉戈米尔

您正在寻找泛型。您可以使MyType泛型并将其指定MyTypeOptions为类型参数MyType

interface MyTypeOptions {
    hasName: boolean;
    hasValue: boolean;
}

// Declare the options separately just so we can specify a type
const options: MyTypeOptions = {
    hasName: false,
    hasValue: true
}

// We specify any as the default to T so we can also use MyType without a type parameter
interface MyType<T = any> {
    /* ... */
    options: T;
}
const myType: MyType<MyTypeOptions> = {
    options: {
        hasName: false,
        hasValue: true
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在TypeScript中指定类型化的对象文字?

如何在TypeScript中指定定义为对象文字的箭头函数的类型?

如何在复合类型文字中指定 PostGIS 地理值?

在 TypeScript 中,如何指定对象中值的类型?

我可以在TypeScript中指定值类型,但仍然让TS推断键类型吗?

在TypeScript箭头函数中指定返回类型

TypeScript中对象文字中的类型定义

如何在 Typescript 中指定对象上允许的键/值组合

在 Typescript 中约束对象的值类型

从 Typescript 中的属性值推断对象的类型

TypeScript中的Nuxt / Vue.js:对象文字可能仅指定已知属性,但“ VueClass”类型中不存在“组件”

通过使用数据框中的值在read_csv中指定列类型

TypeScript:使用对象类型中的值重新映射联合类型

如何在TypeScript中指定任何可更新的类型?

如何在等待中指定 Typescript Mongoose 模型类型

在React TypeScript中指定文件上传事件的类型

函数的参数在Typescript中指定了几个函数类型

在typescript中的接口中精确指定多个类型的值:

返回方法参数中指定的类型的对象,而不是AnyRef

如何使用Mantle在NSArray中指定子对象类型

如何在Typescript中指定由字段索引的对象数组?

在值子查询中指定列的数据类型

如何从PHP的JSON输出中指定字段值的返回类型?

如何在keyof声明中指定值的类型?

在Elixir typespec的类型定义中指定字符串值

在TypeScript中检查文字对象类型的更简单方法

TypeScript中的类和对象文字之间的类型检查

来自Typescript中对象的键和值的类型

在TypeScript中按值类型排除对象键