Asp.net mvc 带有npm和节点模块包的Visual Studio Typescript引用问题

Asp.net mvc 带有npm和节点模块包的Visual Studio Typescript引用问题,asp.net-mvc,typescript,Asp.net Mvc,Typescript,因此,我在ASP NET MVC项目中使用typescript,typescript管理前端JS和angularJs 我有一个viewmodels文件夹,其中包含许多.ts文件。所以我尝试将它们分开,并将其托管在私有npm包下 接下来,我使用npm将它们下载到node\u modules文件夹中,但是这些typescript视图模型的引用不再起作用 假设所有ts位于同一命名空间下。只有一部分是本地typescript文件夹,另一部分是节点模块文件夹 问题出现后我采取的行动 项目包括/node_m

因此,我在ASP NET MVC项目中使用typescript,typescript管理前端JS和angularJs

我有一个viewmodels文件夹,其中包含许多
.ts
文件。所以我尝试将它们分开,并将其托管在私有npm包下

接下来,我使用npm将它们下载到
node\u modules
文件夹中,但是这些typescript视图模型的引用不再起作用

假设所有ts位于同一命名空间下。只有一部分是本地typescript文件夹,另一部分是节点模块文件夹

问题出现后我采取的行动

  • 项目包括/node_modules/@privatescope/viewmodels/*.ts和*.js
  • 确保捆绑包的目标是node_modules/@privatescope/viewmodels/*.js
  • 项目可以像以前一样调试和工作,但我的本地typescript无法获得正确的引用
  • 我还尝试在本地的typescript文件中使用它

    /// <reference path="node_modules/@privatescope/viewmodels/CurrencyViewModel.ts" />
    

    正在寻找建议,谢谢。

    您能在问题中添加一个视图模型声明的示例吗?@MattMcCutchen只需添加一个,看一看。谢谢如果您的所有文件都是全局文件(顶层没有ES6
    导入
    导出
    ),那么
    应该可以工作。我使用类似的东西通过引用路径链接ts
    /
    ,这可能是原因吗`我在上设置了一个项目,从本地目录到
    CurrencyViewModel
    的引用正在VS代码中成功解析(当然,缺少一些其他类)。您可以尝试在VS中加载此项目,如果它有效,请尝试找出它与原始项目之间的区别。
    var currencyViewModel = require("node_modules/@privatescope/viewmodels/CurrencyViewModel.ts")
    
    // error here
    export class CurrencyRepository extends Repository<currencyViewModel> implements IRepository<currencyViewModel>
    
    {
       "compileOnSave": true,
       "compilerOptions": {
        "target": "es5",
        "lib": [
            "dom",
            "es5",
            "scripthost",
            "es6"
        ],
        "module": "commonjs",
        "noImplicitAny": true,
        //"strictNullChecks": true,
        "noEmitOnError": false,
        "removeComments": true,
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true,
        "sourceMap": true,
    },
    "exclude": [
        "node_modules",
        "obj",
        "bin"
    ]
    }
    
    
    
    // viewmodel in node_module
    namespace test.data {
    'use strict';
        export class CurrencyViewModel extends CurrencyGenViewModel { 
        }
    }
    
    //base class also in mode_module
    
    'use strict';
    
    namespace test.data {
        export interface IGenCurrencyViewModel { 
            CurrencyRates: CurrencyRateGenViewModel[];
            Id: number;
            Name: string;
            CurrencyCode: string;
        }
    
        export class CurrencyGenViewModel implements IGenCurrencyViewModel, ICurrency { 
        public CurrencyRates: CurrencyRateGenViewModel[];
        public Id: number;
        public Name: string;
        public CurrencyCode: string;
    
        public static FIELD_CurrencyRates: string = 'CurrencyRates';
        public static FIELD_Id: string = 'Id';
        public static FIELD_Name: string = 'Name';
        public static FIELD_CurrencyCode: string = 'CurrencyCode';
    
        constructor() {
        }
    
        public CloneFromModel(inputModel : Currency) {  
            //CurrencyRateViewModel[]
            this.Id = inputModel.Id;
            this.Name = inputModel.Name;
            this.CurrencyCode = inputModel.CurrencyCode;   
        }
    
        public CloneFromViewModel(inputViewModel : CurrencyViewModel) {  
            if (inputViewModel.CurrencyRates != null) { this.CurrencyRates = inputViewModel.CurrencyRates; }
            this.Id = inputViewModel.Id;
            this.Name = inputViewModel.Name;
            this.CurrencyCode = inputViewModel.CurrencyCode;   
        }
    
        public GetCurrency() : Currency {
            var model : Currency = { 
                //CurrencyRateViewModel[]
                Id: this.Id,
                Name: this.Name,
                CurrencyCode: this.CurrencyCode,    
            };
    
            return model;
        }
    }
    }