node.js - 使用 TypeScript 向现有类型添加属性

标签 node.js typescript typescript2.0

所以我有一个用 TypeScript 编写的库,它使用 NPM 依赖项“ldapjs”。

我还在我的项目中安装了 @types/ldapjs

所以在我的项目中,我有这个:

import {Client} from '@types/ldapjs';
import * as ldap from 'ldapjs';

现在我的问题是 - 如何向类型为 Client 的客户端添加属性?

我有这个:

export interface IClient extends Client{
  __inactiveTimeout: Timer,
  returnToPool: Function,
  ldapPoolRemoved?: boolean
}

其中 IClient 是我的 ldapjs 客户端版本,具有一些额外的属性。

let client = ldap.createClient(this.connOpts);  // => Client
client.cdtClientId = this.clientId++;

但问题是,如果我尝试向客户端添加属性,则会收到此错误:

'cdtClientId' property does not exist on type Client.

有什么方法可以将 Client 转换为 IClient 吗?

我该怎么做?我在许多不同的项目中都遇到了同样的问题。

最佳答案

虽然您添加的答案可能会解决您的问题,但您可以直接增强 Client 接口(interface)并添加属性。您甚至不需要 IClient。您可以使用module augmentation :

declare module "ldapjs" {
    interface Client {
        // Your additional properties here
    }
}

关于node.js - 使用 TypeScript 向现有类型添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44557308/

相关文章:

php - 通过 websocket 添加聊天到现有的 PHP Web 应用程序

node.js - 全局node_modules的package.json

javascript - Typescript 遍历 Record 类型并返回更新的 Record

typescript - 使用 TypeScript 声明类类型(将类作为参数传递)

typescript - Angular2 多态嵌套组件在单独文件中时会中断

kendo-ui - 如何制作 kendo-angle-datepicker 仅显示年份

javascript - Nodejs 返回 HTTP 请求

node.js - 有没有办法在nodejs中读取excel文件

javascript - 我可以在 typescript 中声明一个静态私有(private)函数吗?

javascript - Sequelize 创建不止一个记录问题