typescript - 为接口做“导入类型”而不是“导入”有什么意义吗?
问题描述
假设我在另一个文件中有一个类,我想导入它以使用它的类型
import type { Component } from "react";
这是有道理的,因为 Component 是一个类。
如果我要导入接口怎么办,import type
仍然需要吗?或者 Typescript 是否知道接口没有价值,因此type
不需要。
import type { IHttpResponse } from "../lib/http";
如果添加,编译器不会抱怨,并且文档type
中没有描述这种用法
解决方案
这取决于importsNotUsedAsValues
编译器选项的值(在 tsconfig.json 中,或从命令行传入)。
如果它设置为(默认值) ,则在导入接口(或仅在类型位置使用的类)remove
之间没有区别。在这两种情况下,编译后的 JavaScript 中都没有 import 或 require 语句(因此正在导入的模块中的任何副作用都不会被执行)。import
import type
如果此选项设置为preserve
,import
即使导入的类型是接口,编译器也会发出导入语句;import type
将不会。
如果此选项设置为,则必须使用;导入error
接口。使用会导致编译错误。import type
import
推荐阅读
- json - Wikipedia 的 API 在使用请求模块的 Alexa 技能中不起作用
- css - 工具提示:位置和全宽(同时)
- hadoop - 在 ubuntu 16.04 中安装单个 hadoop 1.x 时出错
- reactjs - 如果我的构建在 qa 中,我如何在 Jenkins 上查看?
- scala - 找不到 ScalaSig
- javascript - Bootstrap React 表格高度到屏幕底部
- tensorflow - 将 tf1 转换为 tf2 用于 Google ML 课程的推荐系统,爆炸式损失
- java - 使用可选的查询参数实现 RESTful GET 端点以从数据库中获取
- android - 活动停止时删除自定义侦听器
- sql-server - 程序内外不同的查询计划