所以我有一个用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'属性不存在。
我可以通过某种方式将客户端转换为IClient吗?
我该怎么做?我在许多不同的项目中遇到同样的问题。
答案 0 :(得分:1)
虽然您添加的答案可能会解决您的问题,但您可以直接扩充Client
界面并添加属性。你甚至不需要IClient
。您可以使用module augmentation:
declare module "ldapjs" {
interface Client {
// Your additional properties here
}
}
答案 1 :(得分:0)
let client = ldap.createClient(this.connOpts) as IClient;
我们使用as
表示法将泛型类型转换为更具体的类型(我认为这是放置它的正确方法)。
我通过这篇文章解决了这个问题: http://acdcjunior.github.io/typescript-cast-object-to-other-type-or-instanceof.html