如果我有一个属性可能是字符串或布尔值,我该如何定义它:
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
不说这些回答了你的问题,但你能采取类似的措施吗?
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;
这通常被称为“联合类型”。1.4中的TypeScript类型系统允许这样做。
请参阅:高级类型
截至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的预期用法