使用Redux,Typescript在不同的文件夹中键入JS模块。如何判断模块的位置?

时间:2017-05-07 20:49:57

标签: javascript typescript requirejs typescript-typings

我在我的应用程序中使用Redux。我正在使用Visual Studio 2015和npm来下载Redux作为依赖项。

我有以下文件夹结构:

MySolution.sln
├── node_modules
│   ├── redux
│   │   ├── index.d.ts
|   |   ├── dist
│   │   |   ├── redux.js
│   │   |   ├── redux.min.js
├── Scripts
│   ├── myscript.ts
│   ├── myscript.js

Redux的节点结构是使用npm

下载时的结构
  

npm install redux

我有一个TypeScript脚本(myscript.ts),它使用Redux,我从中导入createStorecombineReducers

myscript.ts

/// <reference path="../node_modules/redux/index.d.ts" />
import { combineReducers, createStore } from "../node_modules/redux/index";

//... more code
const myApp = combineReducers({
    SelectedAnswers: selectedAnswers
});

var store = createStore(myApp);

编译为以下内容( myscript.js ):

define(["require", "exports", "../node_modules/redux/index"], function (require, exports, index_1) {
    "use strict";
    var _this = this;
    Object.defineProperty(exports, "__esModule", { value: true });

    var questionApp = index_1.combineReducers({
        SelectedAnswers: selectedAnswers
    });

    var store = index_1.createStore(questionApp);
});

如您所见,我的代码使用导入脚本,这是由Visual Studio / TypeScript自动生成的。

这适用于编译目的,因为它指向../../../node_modules/redux/index,这将允许它选取index.d.ts这是TypeScript打字文件(绝对键入)。

所以我的问题出现在应用程序实际运行时,Redux的真实脚本位于下一个文件夹/redux.js中,所以当我运行我的脚本时它告诉我该模块无法加载。

如何告诉TypeScript脚本在运行时位于/redux

我认为,如果我在require.config中针对名称htat在TypeScript生成的define()方法中指定它,那我可以告诉RequireJS脚本在哪里,但是这没有任何效果:

require.config({
    baseUrl: "/",
    paths: {
        "../node_modules/redux/index": "../node_modules/redux/dist/redux"
    }
});

感谢您的帮助。

注意:如果我将index.d.ts移动到与redux.js相同的文件夹并将其称为redux.d.ts,它可以正常工作,但这不是它在npm下载中的显示方式。我不希望每次更新它时都将它们移动到同一个文件夹中。

0 个答案:

没有答案