iT邦幫忙

0

請教 Typescript function 預設型別檢查,在 tsc 後保留要如何實現?

程式碼

function t(a:number,b:number){
  return a+b
}

console.log(t(3,5));
console.log(t(3,'5'));

如果經過tsc的話,其實沒有任何變化
還是

function t(a:number,b:number){
  return a+b
}

console.log(t(3,5));
console.log(t(3,'5'));

但是 tsc 會警告

test_2.ts:6:17 - error TS2345: Argument of type '"5"' is not assignable to parameter of type 'number'.
 'number'

如果我想要在經過 tsc 後保留型別檢查(像類似下面這樣)

function t(a, b) {
  if typeof(a) != typeof(0)
    throw (new Error('type is not number'))
  return a + b;
}
console.log(t(3, 5));
console.log(t(3, '5'));

請問如何做到呢?

看更多先前的討論...收起先前的討論...
we684123 iT邦研究生 5 級 ‧ 2020-07-16 23:58:13 檢舉
還是沒有這個功能 或沒必要呢(´。_。`)
你開發若用TS的話 應該也只會注意TS檔 不會去關注JS八
感覺沒有必要在JS中保留型別檢查
we684123 iT邦研究生 5 級 ‧ 2020-07-17 12:38:49 檢舉
screenleon 因為我是用TS開發lib 然後對方可能是用 js 去呼叫
所以才會想要這個功能防呆
we684123 iT邦研究生 5 級 ‧ 2020-07-17 12:41:02 檢舉
還是請問各位知道如何修改 tsc 的行為嗎?
有沒有類似擴充規則的方式可以插進去?
DanSnow iT邦好手 1 級 ‧ 2020-07-19 12:53:05 檢舉
你可以參考看看這個 https://github.com/fabiandev/ts-runtime
we684123 iT邦研究生 5 級 ‧ 2020-07-19 13:58:39 檢舉
謝謝 DanSnow 我之後研究看看
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答