AI 解決了我一個難以面向群友/搜索引擎編程的 TypeScript 問題..
(其實本文的發(fā)生時間緊接上一篇...不過這一放就是一個月了...現(xiàn)在ChatGPT4都出來n久了...不得感嘆時效真的好夸張...)
好了說回正題...
話說寫過ts的應該都懂...這玩意出自微軟大手...又繼承自萬能的js...上下限都極高...
各種特殊的類型組合語法...可以讓編譯器提前預判錯誤...強制規(guī)范代碼...比如Vue3等...大佬寫得飛起...菜一點分分鐘連閱讀都是問題...
另一個極端就是any大法了...很多不想折騰只想躺平的群眾才不管這么多呢...問就是any...折騰那么多還不如復制粘貼完事...
但是嘛...總靠人工檢查來寫代碼無疑失去了ts的一個非常大的優(yōu)勢...
想要方便肯定得付出學習成本的...但是這里又出現(xiàn)一個情況...
一來是對高級語法非常抽象...甚至還不知道有沒有這個功能...更不知道叫什么...
有可能只是一個美好的愿望...這導致沒法搜索...去爬官方手冊來優(yōu)化一個不疼不癢的功能也不現(xiàn)實...
二來是會使用高級語法的上級大佬通常非常罕見...還別說提問起來還得抽象的巴拉一堆...非常容易誤解...
第三是一堆群友很愉快的直接就拿any大法把你推掉...又不是不能跑對吧...折騰那么多干嘛...
于是每次走過這3步之后...也只能隨緣了...
可是現(xiàn)在有了AI!!!
好了再次回到正題...
本次的問題如下:

怎么樣...一大堆字...是不是看著就想直接pass呢...?
就算是大佬恐怕也沒耐性看吧...群友們直接就聊別的刷跑了...
我簡單表達一下...
其實就是很常見的事件注冊系統(tǒng)...其中有2個細節(jié)...
1是我希望能夠在ts定義注冊的類型...讓使用時可以有類型推斷...不用每次都自己復制粘貼...
2是這種系統(tǒng)還分隔了很多個...每個都是獨立的...我又想抽象一個基類...畢竟他們的js實現(xiàn)都是一樣的...
這個問題涉及到了事件系統(tǒng)本身...又涉及到了多個系統(tǒng)的獨立性...還涉及到使用時的獨立性...
本身就是緯度非常復雜的問題...
在找不到關鍵詞的情況下幾乎沒法搜索...
用文字也很難描述清楚...很容易就會產(chǎn)生歧義...比如'事件系統(tǒng)'這些詞匯...大家都有不同的理解...
最后決定用代碼來提問...代碼是必定沒有歧義的...關鍵是如何表達需求...這里使用了另一種技巧...就是留空...
于是列舉了2個系統(tǒng)定義示例...各自包含了2個事件定義示例和2個調(diào)用示例...這已經(jīng)是8條復雜的信息量了...最后再帶上一個提問留白示例...希望ai hold得住吧...
沒想到...它直接就回答我了...

這個答案看上去應該是能理解我的問題的...但是也沒有用到我不認識的功能...
回答里使用的keyof和索引混搭使用...我提問之前也折騰過...最后還是沒搞定...
(是我才疏學淺...真的很繞...數(shù)次折騰數(shù)次敗北...)
我把回答貼上去之后...各種報錯...
當然...和我預期的一樣...肯定沒法一次搞定的...
只能反饋問題了...畢竟也不知道究竟這個想法最終能不能實現(xiàn)...
面向ai編程...


折騰了幾個來回...主要是在消除報錯...
首個回答其實有基本效果...至少能定義回調(diào)類型了...
但是不能完全消除報錯...不是這里匹配不上就是那里匹配不上...幾種方案開開關關的來回折騰...這就是ts復雜之處...
而且?guī)讉€來回之后...題意會慢慢的發(fā)生偏差...現(xiàn)在已經(jīng)不停的在貼bug...修bug...然后產(chǎn)生新的bug...基本上就聊不回去了...
后來ai讓我把對象換成枚舉...然后...居然成了...!!!

居然就這么成了啊...!!
我感覺ai也不知道為什么行了...反正再從頭問一次它也回答不上完美答案...
但是重點是問題能夠得到了解決...這就很ok...!!!
至于為何我沒用enum...這是有緣故的...但是既然enum能解決...那就這樣吧...
最后...我也不抱希望有別的方案了...可仍然不死心...打算水一水...其實心里已經(jīng)準備妥協(xié)了...
'那如果我不想用enum呢...非要用對象行不行啊...'
沒想到它還真的給出了方案...!!

as const 這回真的是我沒見過的全新語法了...
我去搜索了一下...as const 是有文章介紹的...關鍵詞是'類型斷言'...但是我搜索'類型斷言'卻沒法找到?as const 的介紹...大多數(shù)都停留在常規(guī)介紹里...這就是搜索引擎的局限性啊...
最后就是完美的解決了我要的功能...
在此之前我甚至不知道這個功能是否有可行性...
也不了解應該問什么關鍵詞...
這種情況能夠解決...
在沒有ai之前是沒法想象的...
最后依舊是商業(yè)互吹來結(jié)束文章吧...
