如何使用对象作为参数正确设置构造函数定义

时间:2018-11-22 09:54:46

标签: typescript oop constructor

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

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

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},但也没有运气。

1 个答案:

答案 0 :(得分:0)

如果希望他们传递具有属性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' });