Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在编译后保留多个文件时使用TypeScript模块命名空间_Node.js_Typescript - Fatal编程技术网

Node.js 在编译后保留多个文件时使用TypeScript模块命名空间

Node.js 在编译后保留多个文件时使用TypeScript模块命名空间,node.js,typescript,Node.js,Typescript,我想利用TypeScript的名称空间/模块特性,同时保留多文件输出(每个.ts文件被编译成一个单独的.js文件) 我想要的组织和语法实际上与此QA相同: 但是,我没有让TS将所有文件编译成一个文件,而是在寻找一种方法来保留原始文件结构,并让编译器插入必要的require()语句,以使其在节点中工作 e、 g 应用程序ts /// <reference path="./model/animal.ts" /> var myAnimal = new MyNamespace.Model.A

我想利用TypeScript的名称空间/模块特性,同时保留多文件输出(每个.ts文件被编译成一个单独的.js文件)

我想要的组织和语法实际上与此QA相同:

但是,我没有让TS将所有文件编译成一个文件,而是在寻找一种方法来保留原始文件结构,并让编译器插入必要的
require()
语句,以使其在节点中工作

e、 g

应用程序ts

/// <reference path="./model/animal.ts" />
var myAnimal = new MyNamespace.Model.Animal();
var MyNamespace = { Model: { Animal: require('./model/animal') } };
var myAnimal = new MyNamespace.Model.Animal()

或类似的

要利用外部模块(正是为此目的而构建的),请使用以下功能:

import AnimalModel = "./model/animal.ts";
var myAnimal = new AnimalModel .Animal();
您不需要在
animal.ts
文件中使用
module
关键字

您还需要通过适当的编译器模块模式-对于AMD(RequireJS),您需要通过
--模块AMD

tsc --module amd app.ts

史蒂夫说的。使用外部模块。只是修改一下语法:

import AnimalModel = require("./model/animal");
var myAnimal = new AnimalModel.Animal();
基本上与
var/require
组合相同,只是使用
import
告诉typescript查找
.ts
文件并进行类型推断

还要为节点编译,请使用
--module commonjs
模块标志

tsc --module commonjs app.ts

更多信息:

导入外部模块时是否可以使用命名空间样式语法?i、 e.
import RB.Model.Animal=require('./模型/动物')好吧,经过一些研究,似乎没有那么多。我在TypeScript Github上提出了一个问题: