永远不会为Typings文件生成Javascript文件。 (* .d.ts)

时间:2017-03-22 15:47:04

标签: typescript

我遇到的问题是* .d.ts文件从未生成过javascript文件* .js。所以,我不知道造成这个问题的原因。

我也想知道是否可以在MaskedInputDirective.ts中声明它而不需要* .d.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)
            )
         }
    }
}

2 个答案:

答案 0 :(得分:0)

  

我遇到的问题是* .d.ts文件从未生成过javascript文件* .d.js。

您应该获得std::stringstream ss("144.3 432.3 532.3"); float x, y, z; ss >> x >> y >> z; .d.ts .js用于声明,.d.ts用于运行。没有.js

答案 1 :(得分:0)

我认为这里存在一些误解。声明文件(.d.ts文件)是纯粹的描述性工具,用于注释现有包(.js文件)的结构。

注意这个词。 声明某事正在向编译器宣布某些构造(函数,变量)通过您已完成的其他工作隐式存在于范围内。 定义会告诉编译器创建该构造(函数,变量等)。如果您正在使用typescript编写,那么很少需要为自己的代码手动构建.d.ts文件,因为如果编译器负责创建它,则不需要向编译器宣布存在某些内容。

  

我也想知道是否可以在MaskedInputDirective.ts中声明它而不需要* .d.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)
            )
         }
    }
}