2

数日前に TypeScript フォーラムで質問しましたが、返信がなかったので、ここで試してみようと思いました。

https://typescript.codeplex.com/discussions/447628

typeScript 0.9仕様は言う

&& 演算子は、オペランドを任意の型にすることを許可し、2 番目のオペランドと同じ型の結果を生成します。

false && "123"これは、文字列ではないの場合、明らかに間違ってfalseいます。

誰でもこれについてコメントできますか?

編集 リンクされた質問は説明ではなく、少しフレンドリーな腕を振っています. 仕様。正当化できない正式なエラーが含まれています。つまり、型規則は式のすべての値の型を自由変数で説明する必要があります。仕様。この点で明らかに間違っています。次のいずれかを私の質問に対する回答と見なします。

  • 仕様からの正当化。であると考えるべき理由falsestring;
  • 仕様内の場所へのポインタ。TypeScript の型システムは健全ではないと書かれています (その場合、何が問題なのですか?)。また
  • 私の主張が有効であることの承認と、仕様を取得するために誰と話すべきかのいくつかの兆候。修繕。
4

1 に答える 1

2

typescriptコンパイラがそれを見る方法から、仕様は正しいです。

例えば:

var foo = false && "asdf"

foo に対して推測される型は「string」です。

TypeScript のプレイグラウンドで foo にカーソルを合わせると表示されます。

それはやや間違った仮定です。しかし実際には、実際の型がどうなるかを確認する方法はありません (たとえば、チェーン内に関数呼び出しがある場合や、anyでさえ)。この点で、typescriptは、開発者が自分が何をしているかを知っており、最後の 1 つは彼が本当に使いたいものであると想定しています。

于 2013-06-21T05:07:37.773 に答える