如何在 Typescript 中定义要忽略的项目

How to define items to be ignored in Typescript

我有一个应用程序也使用 ClearScript to add JavaScript as an extension language. I've started using Typescript in other projects and thought I'd use it in this one

我的问题是我将相当多的 C# objects/methods/properties 暴露到 JavaScript 环境中。除了插入

// ts-ignore

在每个实例之上,有没有办法告诉 Typescript 某些符号是 "known"?

最好能够具体说明这些函数的输入和输出,这样当我没有正确使用它们时,TS 可以让我知道。

如何声明外部符号?

比如在这个切片中定义了一个对象

  that.getMyIP = function () {
    var request = new CSRestRequest();
    request.AddParameter("user", username);
    request.AddParameter("pass", password);
    request.AddParameter("command", "getmyip");
    var response = client.Execute(request);
    return response.Content.trim();
  };

CSRestRequest是从C#端导入到JavaScript环境的符号,使用

 jSE.AddHostType("CSRestRequest", typeof(RestRequest)); 

RestRequest是RestSharp提供的符号。)

那么我如何向 Typescript 声明 CSRestRequest 是一个 new 生成 RestSharp RestRequest 对象的外部符号?

您是否尝试过使用 .d.ts 文件?这些文件包含类型定义并被 ts 编译器用于类型检查。

您可以在这里找到信息:https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html

例如,您可以创建 external.d.ts 文件并添加如下内容:

declare class CSRestRequest {
    // constructor(/* args */);

    // method(): void;
}

然后 ts 编译器应该选择外部。d.ts 文件并解析类型。

通常 typescript 使用声明让编译器知道存在于运行时环境中但不是在 typescript 中创建的对象。根据您想要的类型安全级别,您可以将外部对象声明为 any 或更具体的类型。

使用any:

declare const CSRestRequest: any;
declare const client: any;
function getIp(username: string, password: string) {
  var request = new CSRestRequest();
  request.AddParameter("user", username);
  request.AddParameter("pass", password);
  request.AddParameter("command", "getmyip");
  var response = client.Execute(request);
  return response.Content.trim();
};

声明一个class(更具体):

declare class CSRestRequest {
  AddParameter(name: string, value: any): void;
};
declare const client: {
  Execute(req: CSRestRequest): {
    Content: string
  }
};
function getIp(username: string, password: string) {
  var request = new CSRestRequest();
  request.AddParameter("user", username);
  request.AddParameter("pass", password);
  request.AddParameter("command", "getmyip");
  var response = client.Execute(request);
  return response.Content.trim();
};