1 interface Dimensions {
2 width: Number,
3 height: Number
4 }
5
6 function findArea(dimensions: Dimensions): Number {
7 return dimensions.height * dimensions.width;
8 }
7行目、赤い波線の下dimensions.height
とdimensions.width
算術演算の左側は、「any」、「number」、または列挙型である必要があります。
赤い波線を消そうとしているのですが、TypeScript コンパイラがエラーを出す理由がわかりません。私が知る限り、幅と高さは Number 型です。
ベストアンサー1
このエラーが発生した別の例がここにあります。役に立つかもしれません。
TypeScript を使用して日付の差を計算しようとしている場合 (私の場合は、データベースから ISO 文字列を使用しようとしていました):
new Date("2020-03-15T00:47:38.813Z") - new Date("2020-03-15T00:47:24.676Z")
しかし、ブラウザコンソールや他のノード環境に同じコードを配置すると、
new Date("2020-03-15T00:47:38.813Z") - new Date("2020-03-15T00:47:24.676Z")
14137
間違っているかもしれませんが、これは演算子が各オペランドを-
暗黙的に使用しているために機能すると思います。 on Date は a を返すため、操作は機能します。valueOf
valueOf
number
ただし、Typescript はそれを好みません。おそらく、この制約を強制するコンパイラ オプションがあるのでしょうが、私はそれを知りません。
new Date().valueOf()
1584233296463
オペランドを明示的に数値 (bigint) 型にすることで修正できます-
。
修正例
new Date("2020-03-15T00:47:38.813Z").valueOf() - new Date("2020-03-15T00:47:24.676Z").valueOf()