无需修改react-native源码,如何扩展PlatformOSType类型?
扩展React Native的PlatformOSType类型(无需修改官方d.ts)
你可以通过TypeScript模块扩充的方式实现,避免覆盖原模块的所有声明,具体操作如下:
- 不要直接重新声明整个
react-native模块,而是先导入原模块,再对目标类型进行扩充 - 在项目中新建一个
.d.ts文件(比如src/types/react-native-extension.d.ts),写入以下代码:
import 'react-native'; declare module 'react-native' { export type PlatformOSType = import('react-native').PlatformOSType | 'samsung_tv' | 'lg_tv'; }
为什么之前的写法会覆盖所有声明?
你之前的代码直接声明了react-native模块,但没有先导入原模块,TypeScript会将其视为全新的模块定义,而非对已有模块的扩充,因此会覆盖官方的所有类型声明。而先导入原模块后再扩充,TypeScript会自动合并原模块与你新增的类型定义,仅扩展PlatformOSType。
验证生效
配置完成后,在代码中使用Platform.OS时,TypeScript会自动识别samsung_tv和lg_tv这两个新增值,不会再出现类型报错。
内容的提问来源于stack exchange,提问作者Budaa
相关产品推荐
相关产品推荐

