尝试在typescript文件中调用函数时,模块未定义错误

时间:2016-09-03 10:07:21

标签: javascript jquery .net typescript requirejs

示例代码:Index.ts文件,其中包含sample.ts

的引用
/// <reference path="sample.ts" />
var s: sample.Calculate = new sample.Calculate(5, 5); -- error thrown
s.alertme();
  

Sample.ts文件:

    module sample {
     export class Calculate {
        constructor(public x: number, public y: number) {
            console.log(x + y);
        }

        alertme() {
            alert('ok');
        }
    }
}
  

在我调用compute函数时出现以下错误:   enter image description here

PS:我正在使用visual studio 2015。 HTML:

    @{
    ViewBag.Title = "Home Page";
}

<div class="jumbotron">
    <h1>MVC</h1>
    <p class="lead">ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.</p>
    <p><a href="http://asp.net" class="btn btn-primary btn-lg">Learn more &raquo;</a></p>
</div>

<div class="row">
    <div class="col-md-4">

    </div>
</div>
@section scripts{    
    <script src="~/Scripts/typings/Index.js"></script>
}

1 个答案:

答案 0 :(得分:1)

您的Sample.js文件似乎未加载到浏览器中,因此sample模块未加载。

根据您的代码,您似乎想要使用脚本标记加载脚本而不使用模块系统,如果是这样的话,那么您需要做的就是:

@section scripts{
    <script src="~/Scripts/typings/Sample.js"></script>
    <script src="~/Scripts/typings/Index.js"></script>
}

您确实使用requirejs标记了问题,因此,如果您打算使用该问题,那么您需要执行以下操作:

// Sample.ts 
export module sample {
    ...
}

// Index.ts
/// <reference path="sample.ts" />
import sample = require('./Sample');
var s: sample.Calculate = new sample.Calculate(5, 5); // should be fine

您还需要添加&#34; amd&#34;模块到你的compiler options 您可以在the Modules section of the docs中了解更多相关信息。