Generics 为什么';你不抱怨吗?
编译到ES2015时,Promise类型有一种奇怪的行为 在下面的代码中,前两个赋值(Generics 为什么';你不抱怨吗?,generics,es6-promise,typescript-typings,typescript2.0,Generics,Es6 Promise,Typescript Typings,Typescript2.0,编译到ES2015时,Promise类型有一种奇怪的行为 在下面的代码中,前两个赋值(str和strA)失败,抱怨string | number不能赋值给string,因为number不能赋值给string,我认为这是预期的行为。但是当我使用类似的赋值时,编译器不会抛出错误。这是正常的还是一个错误 函数strOrNumFn():字符串|编号{ return Math.random()>0.5?'some string':9; } 常量strOrNum=strOrNumFn(); //此操作失败,
str
和strA
)失败,抱怨string | number
不能赋值给string
,因为number
不能赋值给string
,我认为这是预期的行为。但是当我使用类似的赋值时,编译器不会抛出错误。这是正常的还是一个错误
函数strOrNumFn():字符串|编号{
return Math.random()>0.5?'some string':9;
}
常量strOrNum=strOrNumFn();
//此操作失败,因为无法将数字分配给字符串
常量str:string=strOrNum;
//同样的原因也是如此
常量strA:Array=[strOrNum];
//这并没有失败,但我认为应该
常量strP:Promise=Promise.resolve(strOrNum);
你可以
提前谢谢 这应该是一项工作:
function strOrNumFn (): string | number {
return Math.random() > 0.5 ? 'some string' : 9;
}
const strOrNum = strOrNumFn();
// This fails as number is not assignable to string
const str: string | number = strOrNum;
// This fails same reason
const strA: Array<string | number> = [strOrNum];
// this doesn't fail, but I think it should
const strP: Promise<string | number> = Promise.resolve(strOrNum);
函数strOrNumFn():字符串|编号{
return Math.random()>0.5?'some string':9;
}
常量strOrNum=strOrNumFn();
//此操作失败,因为无法将数字分配给字符串
常量str:string | number=strOrNum;
//同样的原因也是如此
常量strA:Array=[strOrNum];
//这并没有失败,但我认为应该
常量strP:Promise=Promise.resolve(strOrNum);
当我跟随你的链接到游乐场时,我在所有这些语句中都看到了编译错误——包括你说的没有失败的语句。