Typescript 永远不会为键入文件生成Javascript文件。(*.d.ts)
我遇到的问题是*.d.ts文件从未生成javascript文件*.js。所以,我不知道是什么导致了这个问题 我还想知道是否可以在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
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中没有对应的定义——因此不可能生成任何内容。