Javascript 构建配置中的单独类型脚本文件

Javascript 构建配置中的单独类型脚本文件,javascript,typescript,scope,Javascript,Typescript,Scope,我想我有一个相当复杂的问题 我使用了一个JS环境,其中JS脚本是单独执行的,比如说JS被用作脚本语言,比如minecraft或其他游戏中的LUA等等。当用户单击按钮并在我的应用程序的服务器端运行时,可以调用这些脚本 我将TS文件编译为JS,但Typescript transpiler不知道它编译的TS文件确实存在于同一环境中(生命)。例如: 类型d.ts interface Person { name: string; age: number; } interface Car

我想我有一个相当复杂的问题

我使用了一个JS环境,其中JS脚本是单独执行的,比如说JS被用作脚本语言,比如minecraft或其他游戏中的LUA等等。当用户单击按钮并在我的应用程序的服务器端运行时,可以调用这些脚本

我将TS文件编译为JS,但Typescript transpiler不知道它编译的TS文件确实存在于同一环境中(生命)。例如:

类型d.ts

interface Person {
    name: string;
    age: number;
}

interface Car {
    maxv: number;
    brand: string;
}
var steven = new Person();
var steven = new Car();
module person {
    export function run() {
        var steven = new Person();
        // further script code
    }
}
person.ts

interface Person {
    name: string;
    age: number;
}

interface Car {
    maxv: number;
    brand: string;
}
var steven = new Person();
var steven = new Car();
module person {
    export function run() {
        var steven = new Person();
        // further script code
    }
}
car.ts

interface Person {
    name: string;
    age: number;
}

interface Car {
    maxv: number;
    brand: string;
}
var steven = new Person();
var steven = new Car();
module person {
    export function run() {
        var steven = new Person();
        // further script code
    }
}
就我而言,这是有效的代码
person.js
可能绑定到用户单击的按钮上,
car.js
可能是我服务器上的作业脚本。这些脚本完全独立执行,但Typescript不知道这一点。这就是为什么我会得到一个错误,我可能无法将
steven
设置为与以前不同类型的变量

有没有办法告诉Typescript“嘿,这些文件不在一起”

我已经考虑过将每个脚本放入一个名称空间

person.ts

interface Person {
    name: string;
    age: number;
}

interface Car {
    maxv: number;
    brand: string;
}
var steven = new Person();
var steven = new Car();
module person {
    export function run() {
        var steven = new Person();
        // further script code
    }
}

。。。但我不喜欢这种方法。

将它们拆分为单独的项目,并将它们打包为节点模块。它们将被单独编译,并且可以相互使用。:)我也想过,但我必须用+100个文件。这不是一个很好的解决方案。同样的情况也适用于每个脚本都有一个
tsconfig.json
。它们真的没有任何链接吗?它们只是做不同事情的文件所有的文件都集中在一起?他们在一起的原因是什么?还有,为什么要为所有人生成一个接口文件?为什么不依赖文件本身来告诉您它导出的内容的类型呢?嗯,这些文件可能会导入其他文件。但在大多数情况下,它们不会。将它们拆分为单独的项目,并将它们捆绑为节点模块。它们将被单独编译,并且可以相互使用。:)我也想过,但我必须用+100个文件。这不是一个很好的解决方案。同样的情况也适用于每个脚本都有一个
tsconfig.json
。它们真的没有任何链接吗?它们只是做不同事情的文件所有的文件都集中在一起?他们在一起的原因是什么?还有,为什么要为所有人生成一个接口文件?为什么不依赖文件本身来告诉您它导出的内容的类型呢?嗯,这些文件可能会导入其他文件。但在大多数情况下,他们没有。