如果我有一个属性可能是字符串或布尔值,我该如何定义它:

interface Foo{
    bar:string;
    bar:boolean;
}

我不想求助于:

interface Foo{
    bar:any;
}

我认为没有any是不可能的.您可以回答以下任一问题:

我是否忽略了一个规范以及它现在的可能性?这样的事情有计划吗?是否记录了功能请求?

我会这样想象:

interface Foo{
    bar:string;
    bar:boolean;
    bar:any; 
}

var x:Foo = <any>{};
x.bar="asdf";
x.bar.toUpperCase(); // intellisence only for string 

推荐答案

这通常被称为"联合类型".1.4版本的TypeScript类型系统确实允许这样做.

见:Advanced Types

Typescript相关问答推荐

等待的R没有用响应对象展开到R

当类型断言函数返回假时,TypScript正在推断从不类型

在将对象从一个对象转换成另一个对象时,可以缩小对象的键吗?

如果请求是流,如何等待所有响应块(Axios)

在动态对话框中使用STEP组件实现布线

如何推断计算逻辑的类型

对于合并对象中的可选属性(例如选项),类型推断可能是错误的

访问继承接口的属性时在html中出错.角形

Cypress页面对象模型模式.扩展Elements属性

如何将定义模型(在Vue 3.4中)用于输入以外的其他用途

如何编写在返回函数上分配了属性的类型安全泛型闭包

API文件夹内的工作员getAuth()帮助器返回:{UserID:空}

在Cypress中,是否可以在不标识错误的情况下对元素调用.Click()方法?

避免混淆两种不同的ID类型

在Cypress中,您能找到表格中具有特定文本的第一行吗?

创建依赖函数参数的类型

为什么TS2339;TS2339;TS2339:类型A上不存在属性a?

Typescript,如何在通过属性存在过滤后重新分配类型?

如何在打字角react 式中补齐表格组

我是否应该在 Next.js 中的服务器组件中获取秘密数据的所有函数中使用使用服务器?