首页 > 解决方案 > 为接口做“导入类型”而不是“导入”有什么意义吗?

问题描述

假设我在另一个文件中有一个类,我想导入它以使用它的类型

import type { Component } from "react";

这是有道理的,因为 Component 是一个类。

如果我要导入接口怎么办,import type仍然需要吗?或者 Typescript 是否知道接口没有价值,因此type不需要。

import type { IHttpResponse } from "../lib/http";

如果添加,编译器不会抱怨,并且文档type中没有描述这种用法

标签: typescript

解决方案


这取决于importsNotUsedAsValues编译器选项的值(在 tsconfig.json 中,或从命令行传入)。

如果它设置为(默认值) ,则在导入接口(或仅在类型位置使用的类)remove之间没有区别。在这两种情况下,编译后的 JavaScript 中都没有 import 或 require 语句(因此正在导入的模块中的任何副作用都不会被执行)。importimport type

如果此选项设置为preserveimport即使导入的类型是接口,编译器也会发出导入语句;import type将不会。

如果此选项设置为,则必须使用;导入error接口。使用会导致编译错误。import typeimport


推荐阅读