4

我是 TypeScript 的新手,我想为我的代码使用多个文件,使用TypeScript 版本 0.9.0 和 Visual Studio。我认为我编写了正确的代码,IntelliSense 似乎也是如此,但是当我实际运行它时它失败了,抛出了 JavaScript 未定义的异常。

我有两个 .ts 文件,分别是 app.ts 和 module.ts,这是我的短代码。

module.ts 在这里:

module Shapes {
    export class Rectangle {
        constructor(
            public height: number,
            public width: number) {
        }
    }
}

app.ts 在这里:

/// <reference path="app/classes/module.ts" />
var rect = new Shapes.Rectangle(10, 4);

IntelliSense 正确检测到什么是“Shapes”以及什么是“Shapes.Rectangle”,但是当我运行此代码时,错误提示“Shapes”未定义。

所以我在网上搜索了一些文章,包括thisthis,我按照他们的提示进行操作,但我失败了。我不明白为什么...

这是我的 default.htm 代码。

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>TypeScript HTML App</title>
    <link rel="stylesheet" href="app.css" type="text/css" />

    <script src="app/classes/module.js"></script>
    <script src="app.js"></script>
</head>
<body>
    <h1>TypeScript HTML App</h1>

    <div id="content"></div>
</body>
</html>

我想我正确地将 module.js 添加到 HTML 文件中。谁能帮我?

4

1 回答 1

1

我认为您的问题很可能是 module.js 实际上没有被加载。大多数浏览器都包含一些调试工具来查看网络流量,但我更喜欢Fiddler。它独立于浏览器并且非常强大。

由于您使用的是内部模块(我们也选择了这个选项),您可能需要考虑将源代码编译为单个文件。它减少了网络流量,使您的文件系统保持整洁,并使您的 HTML 文件更简单。为此,请在文本编辑器中打开 csproj 文件,查找PropertyGroups包含<TypeScriptTarget>并添加要生成的文件的名称在<TypeScriptOutFile>outputfile.js</TypeScriptOutFile>哪里。outputfile.js

这是我的一个例子:

  <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
    <TypeScriptTarget>ES3</TypeScriptTarget>
    <TypeScriptIncludeComments>true</TypeScriptIncludeComments>
    <TypeScriptSourceMap>true</TypeScriptSourceMap>
    <TypeScriptOutFile>out.js</TypeScriptOutFile>
    <TypeScriptGeneratesDeclarations>true</TypeScriptGeneratesDeclarations>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)' == 'Release'">
    <TypeScriptTarget>ES3</TypeScriptTarget>
    <TypeScriptIncludeComments>false</TypeScriptIncludeComments>
    <TypeScriptSourceMap>false</TypeScriptSourceMap>
    <TypeScriptOutFile>out.js</TypeScriptOutFile>
    <TypeScriptGeneratesDeclarations>false</TypeScriptGeneratesDeclarations>
  </PropertyGroup>
于 2013-06-26T17:41:04.320 回答