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

TypeScript中的成员、联合类型的多类型签名

丁晋
2023-03-14

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

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

我不想求助于:

interface Foo{
    bar:any;
}

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

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

我会这样想象:

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

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

共有3个答案

东方新霁
2023-03-14

不说这些回答了你的问题,但你能采取类似的措施吗?

interface Foo<T>{
    bar:T;
}

function createFoo<T>(bar:T) : Foo<T>{
    return {bar:bar};
}

var sFoo = createFoo("s");
var len = sFoo.bar.length;

var bFoo = createFoo(true);
var result = bFoo.bar === true;
葛晔
2023-03-14

这通常被称为“联合类型”。1.4中的TypeScript类型系统允许这样做。

请参阅:高级类型

闻鹤龄
2023-03-14

截至2015年,工会类型的工作:

interface Foo {
    bar:string|boolean;
}
 类似资料:
  • 主要内容:TypeScript,JavaScript,TypeScript,JavaScript,联合类型数组,TypeScript,JavaScript联合类型(Union Types)可以通过管道(|)将变量设置多种类型,赋值时可以根据设置的类型来赋值。 注意:只能赋值指定的类型,如果赋值其它类型就会报错。 创建联合类型的语法格式如下: 实例 声明一个联合类型: TypeScript var val:string|number val = 12 console.log("数字为 "+ val

  • 本节介绍联合类型,它使用管道符 | 把多个类型连起来,表示它可能是这些类型中的其中一个。我们把 | 理解成 or,这样便于轻松记忆。 1. 慕课解释 联合类型与交叉类型很有关联,但是使用上却完全不同。区别在于:联合类型表示取值为多种中的一种类型,而交叉类型每次都是多个类型的合并类型。 语法为:类型一 | 类型二。 2. 简单示例 联合类型之间使用竖线 “|” 分隔: let currentMont

  • 想实现value是string那么val就是string,value是string[]那么val就是string[]

  • 我希望在Typescript对象中存储String->string的映射,并强制所有键映射到字符串。例如: 我有办法强制要求值必须是字符串(或任何类型..)吗?

  • 如何为动态创建的函数声明泛型类型? 我如何在中使用并传递? < code>useFoo的预期用法