我有以下 config.tsx 文件-
const AuthConfig = {
base_uri: 'https://google.com',
info: {
country: 'Norway',
continent: 'Europe',
}
};
export default AuthConfig;
我正在将该配置文件的内容作为参数传递给其他功能调用 config.tsx 文件之外。
import config from './config'
myFunction(config)
问题-是否可以在调用函数时覆盖来自配置文件的值(例如“大陆”)?
答案 0 :(得分:0)
是的,您可以使用传播算子或Object.assign
myFunction({...config, info: {...config.info, continent: 'America'}})
或
myFunction(Object.assign(config, {info: Object.assign(config.info, {continent: 'America'})}))
答案 1 :(得分:0)
是的,您可以将config
强制转换为any
类型,然后可以像以下这样更新continent
的值:
import config from './config'
(<any>config).continent = "AnotherOne";
// This is for debugging purpose
console.log( config )
myFunction(config);
如果我们不将config
强制转换为任何一个,我们将收到类似以下的错误:
类型'{base_uri:string;信息:{country:string;大陆:字符串; }; }'。
答案 2 :(得分:0)
如果要更改的只是值,而不更改属性。传播物体
const AuthConfig = {
base_uri: 'https://google.com',
info: {
country: 'Norway',
continent: 'Europe',
}
};
export default AuthConfig;
const toSend = {
...AuthService,
info: { ...AuthService.info, continent: "Some Else" }
}
myFunc(toSend);
但是如果相反,您想更改对象结构。 TypeScript会哭。
因此,您需要创建一个ObjectLiteral
类型
export interface ObjectLiteral {
[x: string]: any;
}