我正在嘗試解決庫中的一個缺陷,yargs其中配置型別既作為 kamelCase 又作為 kebab-case 生成,例如
const argv = yargs
.env('CAS')
.help()
.options({
'app-path': {
demand: true,
type: 'string',
},
})
.parseSync();
export type Configuration = typeof argv;
現在Configuration是{'app-path': string, appPath: string}。
我想省略包含破折號的鍵。但是,我如何首先選擇所有包含破折號的鍵?
uj5u.com熱心網友回復:
模板文字型別來救援:
type A = { 'app-path': string, appPath: string }
type B = Omit<A, `${string}-${string}`>;
游樂場鏈接
uj5u.com熱心網友回復:
您可以迭代Configuration物件的鍵并使用過濾器。
const keysToOmit = Object.keys(configObject).filter(s => Boolean(s.match(/-/)))
// keysToOmit: ['app-path']
然后您可以遍歷鍵并從物件中省略它們。
keysToOmit.forEach(key => delete configObject[key])
// configObject: {appPath: 'string'}
在修改物件之前先克隆物件可能也是明智之舉。特別是如果您希望物件在您的應用程式中被視為不可變的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/484015.html
標籤:打字稿
上一篇:驗證屬性存在的打字稿類吸氣劑
