1 interface Dimensions {
2 width: Number,
3 height: Number
4 }
5
6 function findArea(dimensions: Dimensions): Number {
7 return dimensions.height * dimensions.width;
8 }
Run Code Online (Sandbox Code Playgroud)
第7行,红色波浪线下dimensions.height和dimensions.width
算术运算的左侧必须是"any","number"或枚举类型.
我正在努力消除红色波浪形,但我很难过为什么这个打字稿编译器给了我一个错误.据我所知,宽度和高度都是Number类型.
Mat*_*ola 119
这是发生此错误的另一个示例,可能会对人们有所帮助。
如果您正在使用打字稿并尝试计算日期之间的差异(在我的情况下,我试图使用数据库中的 ISO 字符串):
new Date("2020-03-15T00:47:38.813Z") - new Date("2020-03-15T00:47:24.676Z")
Run Code Online (Sandbox Code Playgroud)
但是,如果你把它放在浏览器控制台或其他节点环境中,这个完全相同的代码就可以工作
new Date("2020-03-15T00:47:38.813Z") - new Date("2020-03-15T00:47:24.676Z")
14137
Run Code Online (Sandbox Code Playgroud)
我可能是错的,但我相信这是由于-运算符隐式使用valueOf它的每个操作数。由于valueOf日期返回一个number操作有效。
但是,打字稿不喜欢它。也许有一个编译器选项正在强制这种约束,我不知道。
new Date().valueOf()
1584233296463
Run Code Online (Sandbox Code Playgroud)
您可以通过显式地使操作数编号 (bigint) 类型进行修复,以便-工作。
固定示例
new Date("2020-03-15T00:47:38.813Z").valueOf() - new Date("2020-03-15T00:47:24.676Z").valueOf()
Run Code Online (Sandbox Code Playgroud)
Saj*_*jad 51
我发现的最干净的方法:
const diff = +new Date("2020-03-15") - +new Date("2020-03-15")
Run Code Online (Sandbox Code Playgroud)
https://github.com/microsoft/TypeScript/issues/5710
sam*_*war 11
您可以将表达式转换为数字。
function findArea(dimensions: Dimensions): Number {
return Number(dimensions.height) * Number(dimensions.width);
}
Run Code Online (Sandbox Code Playgroud)
小智 7
我在减去两个日期时遇到了这个问题,这个错误困扰着我,但程序仍然按预期输出。下面的代码按日期对对象数组进行排序(从最新到最旧)。
问题
var Sorted = Data.sort(function(a,b){ return new Date(b.Posted) - new Date(a.Posted) })
解决方案
var Sorted = Data.sort(function(a,b){ return new Date(b.Posted).getTime() - new Date(a.Posted).getTime() })
根据我的理解,这个错误不会阻止编译器/程序执行;然而,更好的做法是为您的开发环境提供显式/受控变量类型。
备查; 在比较/计算某些变量时,Javscript 和 Typescript 可能是不可预测的,因此使用显式类型和转换变量将消除这些警告/错误。
| 归档时间: |
|
| 查看次数: |
27913 次 |
| 最近记录: |