ASP.NET 4

    如果你使用的 Visual Studio 版本还不支持 TypeScript, 你可以安装 Visual Studio 2015 或者 。 这个快速上手指南使用的是 Visual Studio 2015。

    新建项目

    1. 选择 File
    2. 选择 New Project
    3. 选择 Visual C#
    4. 选择 ASP.NET Web Application

    5. 选择 MVC

      取消复选 “Host in the cloud” 本指南将使用一个本地示例。 Use MVC template

    运行此应用以确保它能正常工作。

    下一步我们为 TypeScript 添加一个文件夹。

    将文件夹命名为 src。

    src folder

    添加 TypeScript 代码

    在 上右击并选择 New Item。 接着选择 TypeScript File 并将此文件命名为 app.ts

    添加示例代码

    右击项目并选择 New Item。 接着选择 TypeScript Configuration File 保持文件的默认名字为 tsconfig.json

    Create tsconfig.json

    将默认的 tsconfig.json 内容改为如下所示:

    1. {
    2. "compilerOptions": {
    3. "noImplicitAny": true,
    4. "noEmitOnError": true,
    5. "sourceMap": true,
    6. "target": "es5",
    7. "outDir": "./Scripts/App"
    8. },
    9. "files": [
    10. "./src/app.ts",
    11. ],
    12. "compileOnSave": true
    13. }

    看起来和默认的设置差不多,但注意以下不同之处:

    1. 特别是这里 "outDir": "./Scripts/App"
    2. 显式列出了 "files" 而不是依据 "excludes"选项。
    3. 设置 "compileOnSave": true

    当你写新代码时,设置 "noImplicitAny" 选项是个好主意 — 这可以确保你不会错写任何新的类型。 设置 "compileOnSave" 选项可以确保你在运行web程序前自动编译保存变更后的代码。 更多信息请参见 。

    在视图中调用脚本

    1. Solution Explorer 中, 打开 Views | Home | Index.cshtml

    2. 修改代码如下:

      1. @{
      2. ViewBag.Title = "Home Page";
      3. }
      4. <script src="~/Scripts/App/app.js"></script>
      5. <div id="message"></div>
      6. Compiler: <input id="compiler" value="TypeScript" onkeyup="document.getElementById('message').innerText = sayHello()" /><br />
      7. Framework: <input id="framework" value="ASP.NET" onkeyup="document.getElementById('message').innerText = sayHello()" />
      8. </div>

    测试

    1. 运行项目。
    2. 在输入框中键入时,您应该看到一个消息:

    Picture of running demo

    调试

    1. 在 Edge 浏览器中, 按 F12 键并选择 Debugger 标签页。
    2. 展开 localhost 列表, 选择 src/app.ts
    3. return 那一行上打一个断点。
    4. 在输入框中键入一些内容,确认TypeScript代码命中断点,观察它是否能正确地工作。

    这就是你需要知道的在ASP.NET中使用TypeScript的基本知识了。接下来,我们引入Angular,写一个简单的Angular程序示例。

    1. 安装 。
    2. 用 PackageInstaller 来安装 Angular 2, systemjs 和 Typings。

      Use PackageInstaller to install angular2 Use PackageInstaller to install Typings

    3. 用 PackageInstaller 安装 es6-shim 的类型文件。

      Angular 2 包含 es6-shim 以提供 Promise 支持, 但 TypeScript 还需要它的类型文件。 在 PackageInstaller 中, 选择 Typing 替换 npm 选项。接着键入 “es6-shim”:

    更新 tsconfig.json

    现在安装好了 Angular 2 及其依赖项, 我们还需要启用 TypeScript 中实验性的装饰器支持并且引入 es6-shim 的类型文件。 将来的版本中,装饰器和 ES6 选项将成为默认选项,我们就可以不做此设置了。 添加"experimentalDecorators": true, "emitDecoratorMetadata": true选项到"compilerOptions",再添加"./typings/index.d.ts""files"。 最后,我们要新建"./src/model.ts"文件,并且得把它加到"files"里。 现在tsconfig.json应该是这样:

    添加 CopyFiles 到 build 中

    最后,我们需要确保 Angular 文件作为 build 的一部分复制进来。这样操作,右击项目选择 ‘Unload’ ,再次右击项目选择 ‘Edit csproj’。 在 TypeScript 配置项 PropertyGroup 之后,添加一个 ItemGroup 和 Target 配置项来复制 Angular 文件。

    1. <ItemGroup>
    2. <NodeLib Include="$(MSBuildProjectDirectory)\node_modules\angular2\bundles\angular2.js"/>
    3. <NodeLib Include="$(MSBuildProjectDirectory)\node_modules\angular2\bundles\angular2-polyfills.js"/>
    4. <NodeLib Include="$(MSBuildProjectDirectory)\node_modules\systemjs\dist\system.src.js"/>
    5. <NodeLib Include="$(MSBuildProjectDirectory)\node_modules\rxjs\bundles\Rx.js"/>
    6. </ItemGroup>
    7. <Target Name="CopyFiles" BeforeTargets="Build">
    8. <Copy SourceFiles="@(NodeLib)" DestinationFolder="$(MSBuildProjectDirectory)\Scripts"/>
    9. </Target>

    现在,在工程上右击选择重新加载项目。 此时应当能在解决方案资源管理器(Solution Explorer)中看到node_modules

    用 TypeScript 写一个简单的 Angular 应用

    首先,将 app.ts 改成:

    1. import {Component} from "angular2/core"
    2. @Component({
    3. selector: `my-app`,
    4. template: `<div>Hello from {{getCompiler()}}</div>`
    5. })
    6. class MyApp {
    7. getCompiler() {
    8. return this.model.compiler;
    9. }
    10. }

    接着在 src 中添加 TypeScript 文件 model.ts:

    再在 src 中添加 main.ts

    1. import {bootstrap} from "angular2/platform/browser";
    2. import {MyApp} from "./app";
    3. bootstrap(MyApp);

    最后,将 Views/Home/Index.cshtml 改成:

    1. @{
    2. ViewBag.Title = "Home Page";
    3. }
    4. <script src="~/Scripts/angular2-polyfills.js"></script>
    5. <script src="~/Scripts/system.src.js"></script>
    6. <script src="~/Scripts/rx.js"></script>
    7. <script src="~/Scripts/angular2.js"></script>
    8. <script>
    9. System.config({
    10. packages: {
    11. '/Scripts/App': {
    12. format: 'cjs',
    13. defaultExtension: 'js'
    14. }
    15. }
    16. });
    17. System.import('/Scripts/App/main').then(null, console.error.bind(console));
    18. </script>

    这里加载了此应用。 运行 ASP.NET 应用,你应该能看到一个 div 显示 “Loading…” 紧接着更新成显示 “Hello from TypeScript”。