Typescript在运行时给出错误,但在编译时不给出

时间:2018-10-01 05:10:22

标签: typescript

我正在尝试学习Typescript,但似乎找不到与我的代码相关的问题,我尝试搜索但找不到与我的问题相关的任何相关材料。 这是我的代码:-

<code>
class Hello{
    lars: string;

    constructor(name: string) {
        this.lars = name;
    }

    sayHello(){
        return `hello ${this.lars}`;
    }
}

let b = new Hello('Metallica');
</code>

我使用tsc test.ts编译代码,它编译没有错误,但是当我使用节点test.ts运行它时,它给了我以下错误:

<blockquote>

lars: string;
        ^

SyntaxError: Unexpected token :
    at createScript (vm.js:80:10)
    at Object.runInThisContext (vm.js:139:10)
    at Module._compile (module.js:616:28)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Function.Module.runMain (module.js:693:10)
    at startup (bootstrap_node.js:188:16)
    at bootstrap_node.js:609:3
</blockquote>

该文件在我使用Node test.js时运行,但未获得预期的输出,即“ Hello Metallica”,而node test.ts失败。

这是编译后的代码:-

var Hello = /** @class */ (function () {
    function Hello(name) {
        this.lars = name;
    }
    Hello.prototype.sayHello = function () {
        return "hello " + this.lars;
    };
    return Hello;
}());
var b = new Hello('Metallica');

1 个答案:

答案 0 :(得分:1)

打字稿没有错。您没有看到预期的结果,因为:

  1. 您无法运行打字稿。 Typescript应该编译为javascript,然后可以由例如node运行。您应该运行node test.js
  2. 没有行可以记录到控制台。例如,尝试将最后一行更改为console.log(new Hello('Metallica').sayHello());