Typescript 理論上可以實現關於 NaN 的型別安全嗎

時間 2021-05-30 02:34:31

1樓:滑稽仔

理論上可以,把NaN這個值定義為乙個型別。然後把所有可能出現NaN的情景做型別檢查。比如問題描述中的例子,除數型別為0(字面量),那麼結果必定為NaN。

還有Math.log(-1),不過ts沒有負數型別,所以這個情況很難推導,所以退而求其次推導為number,除非引數是字面量型別。還有就是NaN和number型別進行運算,這種也可以推導出結果為NaN。

綜上所述,利用字面量型別是可以做到的,就是有沒有必要這麼做了。

2樓:椎名 鏡

NaN 和 Infinity 是 IEEE 754 標準的一部分, 都是 Number 型別的合法值, 而不是型別.

你說的這個特性叫做 Refinement Type, 它包括 type + predicates 兩部分, 後者是乙個返回值為 boolean 的函式, 判斷乙個值是否合乎你設定的條件. 這個東西的靜態檢查似乎不太好做[1], TypeScript 暫時還沒有這種語法.

我不知道 F* 是怎麼做到的, 等我看懂了也許能補充一下.

恆星理論上可以有多大呢?

金白石 反對高票回答裡給出的答案 Arroganto,群星閃耀 觀測到的最大的恆星R136A1和BAT99 108到達200 300 太陽質量,但是這並不是理論上可以到達的最大恆星質量。前面回答也提到了第三星族恆星 Pop III stars 可以超過愛丁頓極限,但是沒有提到第三星族恆星的上限質量。...

用筷子夾蒼蠅理論上可以實現嗎?

江言 我覺得肯定做不到 因為你抓不住蒼蠅的原因 12345 絕對可以,不過不知道需不需要功夫,小學的時候某年夏天在奶奶家等吃午飯,自己拿筷子在飯桌玩,就忽然想起某個電視就是兩個小和尚乙個帶著眼鏡的那個,裡面有一句台詞是送你一句話笨笨笨笨笨笨笨笨的那個電影,小時候看過的那個電影裡面的小和尚可以徒手捉蒼...

理論上可以實現控制他人大腦嗎?

貓與我與你 我覺得可以,因為人體的行為是大腦控制的,說到底其實是神經細胞的資訊交流,就乙個人而言,這種關係是神經物理連線而達到控制的目的。只要你和別人的神經細胞能建立連線能交流資訊就是控制,而這種控制除了物理連線還可以通過其他方式,比如說電磁波,腦電波,脈衝磁等等。那為什麼還不能控制呢,因為沒有建立...