我对Angular2和打字稿都比较新。由于打字稿是javascript的超集,我希望像console.log
这样的函数能够正常工作。 console.log
在组件类之外的.ts
文件中完美运行,但不能像我在组件类中所期望的那样工作。
// main.ts
import { Component } from '@angular/core';
console.log("Hello1"); //1. This works perfectly
@Component({..)
export class App {
s: string = "Hello2";
// console.log(s); //2. This gives compilation error (when uncommented)
// Error: Function implementation is missing or not immediately following the declaration.
}
我有什么遗失的吗?
答案 0 :(得分:52)
它没有工作,因为console.log()它不在"可执行区域"该课程" App"。
类是由属性和方法组成的结构。
让代码执行的唯一方法是将其放在将要执行的方法中。例如:constructor()
console.log('It works here')
@Component({..)
export class App {
s: string = "Hello2";
constructor() {
console.log(this.s)
}
}

将类视为普通的javascript对象。
期望这个有用吗?
class: {
s: string,
console.log(s)
}

如果您仍然不确定,请尝试使用typescript playground,在那里您可以看到生成普通javascript的打字稿代码。
答案 1 :(得分:6)
console.log
应该包含在一个函数中,"默认"每个类的函数都是constructor
,所以它应该在那里声明。
import { Component } from '@angular/core';
console.log("Hello1");
@Component({
selector: 'hello-console',
})
export class App {
s: string = "Hello2";
constructor(){
console.log(s);
}
}
答案 2 :(得分:0)
还尝试更新浏览器,因为Angular需要最新的浏览器。 检查:https://angular.io/guide/browser-support
我在更新最新浏览器后修复了console.log问题。