我的輸入輸入是一個字串陣列lines。我想在 TypeScript 中撰寫如下代碼。
lines
.filter((line:string) => line.match(/resource "[^"] "/))
.map((line:string) => line.match(/resource "([^"] "/)[1])
坦率地說,我對如何在 TypeScript 中實作這一點有點迷茫,這就是其中的一些原因。
- 我知道在運行時第二個
match不會null并且會在 slot 中捕獲一些東西[1],但是 TypeScript 編譯器似乎無法弄清楚這一點并嘮叨我。 - 我可以通過第二個
map操作來解決它,該操作使用三元運算子?來檢查空陣列或空陣列,并且實際上可以編譯并運行良好。但是,linter 在 Git 預提交掛鉤中抱怨,這告訴我我走錯了路。
什么是正確的軌道?在 TypeScript 中執行此操作的“正確”方法是什么?謝謝!
uj5u.com熱心網友回復:
首先匹配所有字串,為簡潔起見使用可選鏈接,然后根據是否匹配進行過濾。
const matches = lines
.map(line => line.match(/resource "([^"] ")/)?.[1])
.filter(Boolean) as string[];
但是你的匹配/resource "([^"] "/看起來有點可疑——你真的想排除第一個"并包含第二個嗎?或者你可能想要/resource "([^"] )"/?
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/449578.html
