ts类型重载报错:后续属性声明必须属于同一类型?

interface StyleDeclaration {
    overflow: 'squish' | 'clip' | 'scroll' | null;
}

别人写了这样一个接口的属性申明,但是他写的是错的,不全的。为了不报错,我在项目里增加了d.ts 写了下面这段。之前是可以用的,最近不知道为什么失效了。并且给了我一个报错信息:后续属性声明必须属于同一类型。属性“overflow”的类型必须为“"clip" | "squish" | "scroll" | null”,但此处却为类型“string | null”

interface StyleDeclaration {
    overflow: string | null;
}

直接去node_modules里面改也不太好,因为再次npm的时候会被覆盖,同事人也不少,这样并不方便。

我试过在tsconfig中配置"skipLibCheck": true,但这样只是在我的d.ts里面不报错了,代码中 overflow 如果给了枚举以外的字符串,依旧会报错。

阅读 2.7k
1 个回答

如果仅仅作参数类型约束的话也许可以换成 type

import {StyleDeclaration as StyleDeclarationOrigin} from 'xxx';
export type StyleDeclaration = StyleDeclarationOrigin | {
  overflow: 'hidden' | 'visible' | 'auto' | 'initial' |
    'unset' | 'revert' | 'revert-layer'
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏