gpt4 book ai didi

javascript - TypeScript 在生成的 JavaScript 中列出导入的接口(interface)和类型

转载 作者:搜寻专家 更新时间:2023-10-30 21:00:42 25 4
gpt4 key购买 nike

我有一个导出类、类型和接口(interface)的模块 A:

export class Event {
// empty
}

export interface EventHandler {
handle(event: Event): void
}

export type EventCallback = (event: Event) => void

我可以在另一个模块 B 中使用它:

import {
EventCallback,
EventHandler,
Event
} from "./ts_interface_bug"

let x: EventCallback = (event) => {
console.log(event)
}

class MyHandler implements EventHandler {
handle(event: Event): void {
console.log(event)
}
}

但编译器在生成 JavaScript (B.js) 时会保留类型:

import { EventCallback, EventHandler, Event } from "./ts_interface_bug.js";
let x = (event) => {
console.log(event);
};
class MyHandler {
handle(event) {
console.log(event);
}
}

这是错误的 - 没有为类型和接口(interface)生成代码,如您在 A.js 中所见:

export class Event {
}

这是一个错误还是我可以以某种方式配置 TypeScript 编译器以忽略类型和接口(interface)?

typescript 3.5.3

tsconfig-build.json:

"compilerOptions": {
"allowJs": true,
"noImplicitAny": true,
"removeComments": true,
"preserveConstEnums": true,
"sourceMap": true,
"strict": true,
"strictPropertyInitialization": false,
"target": "ES2016",
"lib": [
"dom", "ES2016"
],
"module": "ES2015",
"moduleResolution": "node",
"typeRoots": [
"./node_modules/@types"
],
"plugins": [
{
"transform": "@zoltu/typescript-transformer-append-js-extension/output/index.js"
}
],
},

package.json:

"scripts": {
"build": "ttsc --build tsconfig-build.json",
},
"devDependencies": {
"@zoltu/typescript-transformer-append-js-extension": "^1.0.1",
"ttypescript": "^1.5.7",
"typescript": "^3.5.3"
}

最佳答案

以上示例在使用 tsc --build tsconfig.json 时有效。 ttypescript 或 typescript-transformer-append-js-extension 插件(在 import 语句中修复 https://github.com/microsoft/TypeScript/issues/16577 )中一定有问题。

我打开了一个错误:https://github.com/Zoltu/typescript-transformer-append-js-extension/issues/3

更新 显然,错误是我需要最后 运行转换器。这修复了它:

"plugins": [
{
"transform": "@zoltu/typescript-transformer-append-js-extension/output/index.js",
"after": true
}
],

关于javascript - TypeScript 在生成的 JavaScript 中列出导入的接口(interface)和类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57462647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com