typescript - 如何从 Typescript 模块内部的子命名空间导入单个类型、类、常量或枚举?

标签 typescript

我正在使用 Google Cloud Platform 和 Typescript。
我正在处理一些应该实现特定 GPC 类型的代码和变量。喜欢:

import { protos } from "@google-cloud/aiplatform";

class myClass {
  public async getModelById(id: string): Promise<protos.google.cloud.aiplatform.v1beta1.IModel>
  { /* ... */ }

  public async getTrainingPipelineById(id: string): Promise<protos.google.cloud.aiplatform.v1beta1.ITrainingPipeline>
  { /* ... */ }
}

我只想导入 类型 , 类(class) 枚举 我想使用,例如
import { IModel, ITrainingPipeline } from "@google-cloud/aiplatform".protos.google.cloud.aiplatform.v1beta1 ;
// I know that the code above does not works, but you got the idea


class myClass {
  public async getModelById(id: string): Promise<IModel>
  { /* ... */ }

  public async getTrainingPipelineById(id: string): Promise<ITrainingPipeline>
  { /* ... */ }
}
如何从模块内部的子命名空间导入单个类型、类或枚举?

最佳答案

总之,you can't do that .
从链接总结:即使语法看起来相似,导入命名导入与解构对象不同,因此您不能像解构那样嵌套它。您将不得不使用两个语句:

import { protos } from "@google-cloud/aiplatform";
let {google: {cloud: {aiplatform: {v1beta1: {IModel, ITrainingPipeline}}}}} = protos;

// or, perhaps more readably
let {IModel, ITrainingPipeline} = protos.google.cloud.aiplatform.v1beta1;
Playground

关于typescript - 如何从 Typescript 模块内部的子命名空间导入单个类型、类、常量或枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66250577/

相关文章:

css - 如何移动矩形并将坐标作为全局来裁剪所选图像

javascript - Aurelia EventAggregator 未正确导入

angular - '[ngTemplateOutet ]' is working but ' *ngTemplateOutlet' 不是

typescript - 如何连接扩展/继承相同类型的两个不同数组类型?

typescript - 如何创建使用类型安全操作 AsyncCreator 的通用异步请求史诗来简化 Redux 中 api 请求流的处理

javascript - 从另一个方法调用对象的方法

Typescript strictNull 检查和闭包

reactjs - 在 React TypeScript 中使用异步等待和 try 和 catch 子句处理 HTTP 错误

typescript - 使用 fp-ts 重写一个用记录器包装的小函数

javascript - 如何将复杂的 JSON 值映射到简单对象数组