styled-components自定义主题类型声明:default.d.ts等文件不生效问题
问题原因:并非Bug,是TypeScript声明文件的命名匹配规则导致
你遇到的情况不是styled-components或TypeScript的Bug,核心原因在于同名文件的类型声明优先级规则:
当同一目录下存在
default.ts和default.d.ts时,TypeScript会自动将default.d.ts识别为default.ts模块的专属类型声明文件,而非独立的模块扩展声明文件。此时文件内的declare module "styled-components"代码不会被用来扩展styled-components的默认类型,而是会被当作./default模块的类型补充。当你将文件改名为
styled.d.ts或defaultTheme.d.ts时,这些文件名与目录内的业务代码文件(default.ts)不同名,TypeScript会将其视为独立的全局声明文件,此时文件内的declare module "styled-components"代码会被正确识别为对styled-components模块类型的扩展,从而生效。
解决建议
- 保持声明文件与业务代码文件不同名,比如使用
styled.d.ts、theme-extend.d.ts这类命名,避免和目录内的.ts业务文件重名。 - 确认
tsconfig.json的include配置包含了该声明文件所在目录(通常默认配置src/**/*即可覆盖)。
内容的提问来源于stack exchange,提问作者Bekzod Mirzaahmedov
相关产品推荐
相关产品推荐

