我有两个接口。除了一把钥匙之外,它们真的很相似。
interface InitialStateFromDB {
uploads: {
companyImage: string,
map: string
},
adminPasswords: string,
postInfos: PostInfo[] | undefined
}
interface InitialState extends Omit<InitialStateFromDB, 'adminPasswords'> {
adminPasswords: AdminPassword
}
Run Code Online (Sandbox Code Playgroud)
我从 DB 获得了 initialState。
const initialStateFromDB: InitialStateFromDB = window.__PRELOADED_STATE__;
Run Code Online (Sandbox Code Playgroud)
然后我从initialStateFromDB 中提取每个属性的值来生成initialState。
let adminPasswords: AdminPassword = JSON.parse(initialStateFromDB.adminPasswords);
const initialState : InitialState = {
uploads : initialStateFromDB.uploads,
adminPasswords,
postInfos: initialStateFromDB.postInfos
}
Run Code Online (Sandbox Code Playgroud)
但我认为除了 adminPasswords 属性之外,还有一种更简单的合并方法。所以我搜索了这个。
但是,我不知道如何在打字稿中做到这一点。
所以,我的问题是“如何克隆除 Typescript 中的一个键之外的对象”
您需要的是扩展运算符(检查“对象扩展和休息”部分)。Typescript 是 JavaScript 的超集,两者都支持此功能。
const {adminPasswords, ...state} = initialStateFromDB;
const initialState: InitialState = {
...state,
adminPasswords: JSON.parse(adminPasswords)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3483 次 |
| 最近记录: |