TypeScript导入外部接口时报错:初始化器类型无法赋值给接口类型
接口拆分到单独文件后类型不匹配的原因分析
同文件正常运行的代码
export interface EditorFunctions { getEditor: () => Editor } const editorFunctions: EditorFunctions = { getEditor() { return editor; }, }
拆分后的代码结构
types.ts 文件内容
export interface EditorFunctions { getEditor: () => Editor; }
主TS文件内容
import type {EditorFunctions} from "$lib/write/types"; const editorFunctions: EditorFunctions = { getEditor() { return editor; }, }
此时触发如下报错:
Initializer type {getEditor(): Editor} is not assignable to variable type EditorFunctions
错误原因
核心问题是两个文件中的Editor类型并非同一类型,具体来说:
- 当接口与实现同处一个文件时,TypeScript可以直接识别当前文件内定义的
Editor类型,类型校验自然通过。 - 将接口移至
types.ts后,该文件内的Editor类型未被正确定义或引入,导致EditorFunctions接口中getEditor的返回值类型,与主文件里getEditor函数返回的editor变量类型不匹配,最终触发类型不兼容的报错。
直白点说:types.ts里的Editor和主文件里的Editor不是同一个类型,TypeScript判定你的对象不符合接口要求,所以报错。
内容的提问来源于stack exchange,提问作者user11281688
相关产品推荐
相关产品推荐

