带有 socket.io 的 Angular2 Ionic:未解析的函数 io

Angular2 Ionic with socket.io : unresolved function io

socket.io包含如下:

    <body>

      <ion-app></ion-app>

      <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.4.8/socket.io.js"></script>
      <!-- cordova.js required for cordova apps -->
....
...
</body>

在服务中:

import '..';

@Injectable()
export class ApiEndpoint {
  public socket: any;

  constructor() {
    this.socket = io(remote);  <-- ERROR Cannot find name 'io'.
  }
}

如何处理这个错误?顺便说一句,这只是一个编译时错误。 显然程序运行良好。

您可以添加环境声明(称为 io)以避免编译时错误:

import '..';

// Prevent compile-time errors
declare var io;

@Injectable()
export class ApiEndpoint {
  public socket: any;

  constructor() {
    this.socket = io(remote);  <-- ERROR Cannot find name 'io'.
  }
}

declare 关键字用于环境声明,您希望在其中定义可能不是源自 TypeScript 文件的变量。