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

Typescript 永远不会为键入文件生成Javascript文件。(*.d.ts),typescript,Typescript,我遇到的问题是*.d.ts文件从未生成javascript文件*.js。所以,我不知道是什么导致了这个问题 我还想知道是否可以在maskedinputdirection.ts中声明它,而不需要*.d.ts文件。那也可能吗 [MaskedInputTypings.d.ts] export function createTextMaskInputElement(a: any): any export function conformToMask(a: any, b: any, c: any): an

我遇到的问题是*.d.ts文件从未生成javascript文件*.js。所以,我不知道是什么导致了这个问题

我还想知道是否可以在
maskedinputdirection.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)
            )
         }
    }
}
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)
            )
         }
    }
}
我遇到的问题是*.d.ts文件从未生成javascript文件*.d.js


你应该得到一个
.d.ts
和一个
.js
.d.ts
用于声明,
.js
用于运行。这里没有
.d.js

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

注意这个词。声明某物就是通过您所做的其他工作向编译器宣布某个构造(函数、变量)隐式存在于范围中。定义某物就是告诉编译器创建该构造(函数、变量等)。如果您是用typescript编写的,您几乎不需要为自己的代码手动构造.d.ts文件,因为如果编译器负责创建某个文件,您不需要向编译器宣布该文件的存在

我还想知道是否可以在maskedinputdirection.ts中声明它,而不需要*.d.ts文件。那也可能吗

是的,但是假设函数
createTextMaskInputElement
符合任务
存在于范围内的某个地方。鉴于您正在创建的是一个模块,除非您显式导入它们的定义,否则您不应该访问这些模块。在哪里定义了
createTextMaskInputElement
conformToMask
?功能体在哪里

如果它在您编写的某些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 } 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)
            )
         }
    }
}
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)
            )
         }
    }
}

你为什么需要它?
.d.ts
文件的确切原因是只为现有javascript的typescript编译器提供类型声明,例如,对于内置函数或node.js、lodash等。js代码已经存在,无需生成另一个。除此之外,
d.ts
文件只包含类型定义——在Javascript中没有对应的定义——因此不可能生成任何内容。