Typescript官方說它是Javascript的超集,好多人也是這麼理解的。 本人驗證過一些case,得出結論:並非嚴格的超集。前端
例一:vue
contact.jsjava
function contact() { this.name = "Jackie Ge" return { cname: this.name, getCname() { return this.cname } } } var c = new contact console.log(c.cname, c.getCname())
若是是contact.ts, 那麼tsc編譯的時候出錯:
error TS2350: Only a void function can be called with the 'new' keyword.react
例二:程序員
function Foo() { } Foo.array = [1, 2, 3] Foo.min = function () { return Math.min(...this.array) } var obj = { array: [3, 6, 9] } console.log(Foo.min()) console.log(Foo.min.apply(obj))
tsc的時候報錯:
error TS2339: Property 'array' does not exist on type '() => void'.
error TS2339: Property 'min' does not exist on type '() => void'編程
我想說的是,最好老是要作一些實地測試, 不要人云亦云。並且微軟的東西作廣告的成分較大,最好抱着懷疑的態度。微軟技術從COM, VB, JScript, 到WPF, SilverLight,坑害了一代又一代的程序員,真是毀人不倦。目前Typescript又有這個架勢。因此玩笑的說,程序員珍愛生命,遠離微軟。後端
主觀的分析TypeScript有其自身的優勢:app
但缺點也明顯:框架
後來仔細想了一番,我對TS的觀點確實有那麼點偏見,估計因爲多年受MS毒害以後的反彈吧。因此在此更正一點認識:函數
若是隻作靜態類型檢查, 推薦flow check, facebook出品。和TypeScript不一樣,它屬於非侵入式編程。並且react和vue自己的源碼都在用。個人理解是,ts開源,但非ES標準。也保不齊之後會加了不少私貨而愈來愈遠了ES標準。小公司小項目問題不大,但大公司大項目,fb,阿里巴巴等通常不會用ts,而是用標準ES或者自行開發框架。對於長期的大項目,公司的核心項目等,儘可能向標準靠攏吧。
不能凡事都依賴智能提示吧,對於本身的項目代碼,總得要有合理的規範,總得要記住裏面的重點方法名,變量名吧。並且重要的方法名,變量名,命名好以後,推薦要長期保持,而非朝令夕改,而非總想着以後重構。