2017-03-22 2 views
0

問題は、* .d.tsファイルがjavascriptファイル* .jsを生成しなかったことです。だから、私はここで何が起こっているのか分からない。入力ファイルに対してJavascriptファイルが生成されることはありません。 (* .d.ts)

それだけではなく、* .d.tsファイルを必要とするのMaskedInputDirective.tsでそれを宣言することが可能であるならば、私も疑問に思います。それも可能ですか?

[MaskedInputTypings.d.ts]

export function createTextMaskInputElement(a: any): any 
export function conformToMask(a: any, b: any, c: any): any 

[MaskedInputDirective.ts]

import { createTextMaskInputElement } from './MaskedInputTypings' 
export { conformToMask } from './MaskedInputTypings' 

export class MaskedInputDirective { 
    private _textMaskInputElement: any; 
    private _inputElement: HTMLInputElement; 

    private setupMask() { 
     if (this.inputElement) { 
      this.textMaskInputElement = createTextMaskInputElement(
       Object.assign({inputElement: this.inputElement}, this.textMaskConfig) 
      ) 
     } 
    } 
} 
+1

あなたがそれを必要とするのはなぜ? '.d.ts'ファイルの正確な理由は、既存のjavascript用のtypescriptコンパイラの型宣言だけを提供することです。組み込み関数やnode.js、lodashなどのものJSコードはすでに存在しています。別のコードを生成する必要はありません。また、 'd.ts'ファイルには型定義のみが含まれています(Javascriptには対応していません)ので、何も生成することはできません。 – Matthias247

答えて

0

私はここにいくつかの誤解があると思います。宣言ファイル(.d.tsファイル)は、既存のパッケージ(.jsファイル)の構造に注釈を付ける完全な記述ツールです。

この用語に注意してください。 を宣言すると、何らかの構文(関数、変数)が暗黙的にスコープ内に存在することがコンパイラにアナウンスされます。 を定義すると、そのコンストラクト(関数、変数など)を作成するようにコンパイラに指示しています。 typescriptで書いている場合は、コンパイラがその作成を担当する場合、コンパイラに何かが存在することをアナウンスする必要がないため、手動で.d.tsファイルを作成する必要はほとんどありません。

* .d.tsファイルを必要とせずに、MaskedInputDirective.tsで宣言することが可能かどうかも疑問です。それも可能ですか?

はい、それはですが、それは機能createTextMaskInputElementconformToMaskがスコープ内どこかに存在する前提としています。あなたが作成しているものがのモジュールであることを考えれば、明示的にその定義をインポートしない限り、それらにアクセスするべきではありません。どこにありますかcreateTextMaskInputElementconformToMaskと定義されていますか?関数本体はどこですか?

それはあなたが書いたいくつかのTSコードでなら、あなたは.TSファイルを直接インポートすることができていること。 .d.tsファイルに何かを生成させることが期待される場合、これが当てはまると思います。それは次のようになります。

[MaskedInputUtils.ts]

export function createTextMaskInputElement(a: any): any { 
    // function implementation 
} 
export function conformToMask(a: any, b: any, c: any): any { 
    // function implementation 
} 

[MaskedInputDirective.ts]

import { createTextMaskInputElement, conformToMask } from './MaskedInputUtils' 

export class MaskedInputDirective { 
    private _textMaskInputElement: any; 
    private _inputElement: HTMLInputElement; 

    private setupMask() { 
     if (this.inputElement) { 
      this.textMaskInputElement = createTextMaskInputElement(
       Object.assign({inputElement: this.inputElement}, this.textMaskConfig) 
      ) 
     } 
    } 
} 
0

私は* .d.tsファイルのJavaScriptファイルを生成されることはありませんしている問題* .d.js。

あなたは.d.ts.jsを取得する必要があります。 .d.tsは宣言用で、.jsは実行用です。 .d.jsはありません。

関連する問題