如何正确设置以对象为参数的构造函数定义



我正在编写一个请求助手,我想在其中定义对象中的自定义属性,而不是将它们设置为参数。

因此,我希望下面的代码工作

import { IRequest } from './request'
export default class Request implements IRequest {
constructor({baseUrl: string, timeout: string}: object) {}
}

接口:

export interface IRequest {
new: ({ baseUrl: string, timeout: number }: object): void
}

如果没有类型object,我会看到一个错误,指示构造函数中的参数应该有一个typedef,这是公平的,但当我分配:object(如上所述(时,我得到的是:[tslint] variable name clashes with keyword/type [variable-name]

你能建议正确的方法吗?我可能在类型定义方面做错了什么。尝试了{[key: string]: any},但也没有成功。

如果你想让他们传递一个属性为baseUrltimeout的对象,你需要先命名它,然后键入它

//         name: type
constructor(obj: {baseUrl: string, timeout: string}) {}

简化示例:

class Example {
constructor(obj: { baseUrl: string, timeout: string }) {
console.log(obj.baseUrl);
console.log(obj.timeout);
}
}
const request = new Example({ baseUrl: 'localhost', timeout: '5s' });

相关内容

最新更新