2017-06-15 13 views
0

したがって、NPM depenedency 'ldapjs'を使用するTypeScriptで記述されたライブラリがあります。TypeScriptを使用して既存のタイプにプロパティを追加する

私は@types/ldapjsもプロジェクトにインストールしています。

だから私のプロジェクトで、私はこれがあります。今ここに

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

は私の質問です - どのように私はタイプのクライアントとクライアントにプロパティを追加することができますか?

私はこれを持っている:

iClientははいくつかの余分な性質を持つldapjsクライアントの私のバージョンをある
export interface IClient extends Client{ 
    __inactiveTimeout: Timer, 
    returnToPool: Function, 
    ldapPoolRemoved?: boolean 
} 

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

が、問題は、私はクライアントにプロパティを追加しようとした場合、私はこのエラーを取得するには、次のとおりです。

'cdtClientId' property does not exist on type Client.

は、私がiClientはにクライアントをキャストすることができますいくつかの方法はありますか?

どうすればいいですか?私は多くの異なるプロジェクトで同じ問題を抱えています。

答えて

0

うわー、それほど難しくありませんでした。私たちは、より具体的なタイプ(私はそれを置くための正しい方法だと思います)にジェネリック型をキャストするas表記を使用

let client = ldap.createClient(this.connOpts) as IClient; 

は、私がこの記事を経てこれを理解:あなたはあなたの問題を解決する可能性があります答えとして追加したものを http://acdcjunior.github.io/typescript-cast-object-to-other-type-or-instanceof.html

1

、あなたが直接Clientインターフェースを強化し、プロパティを追加することができますが。あなたはIClientも必要ありません。 module augmentationを使用できます。

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

いいです –