iT邦幫忙

0

請問TypeScript的Object宣告方式?

  • 分享至 

  • xImage

如題,小弟目前有意將公司還不是太大的專案前端用TypeScript寫看看,因為之前寫後端JAVA的習慣,看到TypeScript真的很吸引人,之前被JavaScript的any和除錯搞得好煩....

看了網路上的教學,因為是英文的,自己英文聽力也不是太好,只知道講者說下面這樣的方式可以讓TypeScript更方便了解物件裡的型別:

const person: {
    name: string;
    age: number;
} = {
    name: 'JOJO',
    age: 45
}

但之後又說這不是一個好的習慣!?
然後又說可以用下面這樣的方式:

const person = {
    name: 'JOJO',
    age: 45
}

讓TypeScript自己判定型別,啊這不就跟JS一樣....

想請教一下業界前輩,寫TypeScrip的Object一般都用原本JS的方式還是會真的去給他宣告型別呢??

froce iT邦大師 1 級 ‧ 2021-07-21 08:21:10 檢舉
類型推斷啊,當變數被指派初始值時,翻譯器會直接幫你指定好變數型態。
JS沒有類型推斷,TS有,所以JS你在 name = "aaa" 的時候,name的型態其實是any,執行時用到這個物件才會檢查他有沒有你用到的方法,TS就會直接說你的name是string。

你會寫得彆扭就是這樣來的,動態型別的語言就是寫的時候很爽,debug的時候很幹。
froce iT邦大師 1 級 ‧ 2021-07-21 08:41:12 檢舉
然後TS本來就是JS的超集,你想要的話在TS裡直接都用JS幹也沒問題,只是會少了相關的TS特性。

有了類型推斷後,宣告變數類型反而有點多餘,畢竟你不太可能回去看原本的宣告,都是看IDE給你的提示。
samuraigo iT邦新手 4 級 ‧ 2021-07-21 13:15:55 檢舉
哇!瞭解了,感謝f大解惑!TS類型推斷真的很方便,提示也很猛!JS那個any來any去的真的想殺人XD
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答