我发布了第一个使用TypeScript编写的npm软件包。 我已将其下载到我拥有的另一个项目中,发现我没有完成,并且几乎不可能以这种方式使用它(由于文档的原因,这并不是完全不可能的。)
如果我做对了,我应该创建一个声明文件(.d.ts)并将其添加到包中。 我的问题是我做得不好。
我在网上寻找并阅读了有关信息,但仍然无法正确完成。
我的“ typings.d.ts”看起来像这样:
export declare function Slider(props: SliderProps): void;
模块道具放置在与模块本身分开的'types.ts'文件中。
任何帮助将不胜感激。
package.json
{
"main": "node_modules/expo/AppEntry.js",
"name": "react-native-range-slider-expo",
"description": "range slider",
"license": "MIT",
"homepage": "https://github.com/D10S60948/react-native-range-slider-expo#readme",
"version": "1.0.6",
"types": "./src/index.d.ts",
"scripts": {
"start": "expo start",
"android": "expo start --android",
"ios": "expo start --ios",
"web": "expo start --web",
"eject": "expo eject",
"build": "npx tsc -p tsconfig.json"
},
"dependencies": {
"expo": "~38.0.8",
"expo-status-bar": "^1.0.2",
"react": "~16.11.0",
"react-dom": "~16.11.0",
"react-native": "https://github.com/expo/react-native/archive/sdk-38.0.2.tar.gz",
"react-native-gesture-handler": "^1.6.1",
"react-native-svg": "^12.1.0",
"react-native-web": "~0.11.7"
},
"devDependencies": {
"@babel/core": "^7.8.6",
"@types/react": "~16.9.41",
"@types/react-native": "~0.62.13",
"typescript": "~3.9.5"
},
"keywords": [
"range",
"slider",
"expo"
]
}
tsconfig.js
{
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"jsx": "react-native",
"lib": [
"dom",
"esnext"
],
"moduleResolution": "node",
"noEmit": true,
"skipLibCheck": true,
"resolveJsonModule": true,
"strict": true,
"declaration": true
}
}
答案 0 :(得分:2)
您不需要手动创建类型声明文件。
您可以使用tsconfig.json和package.json完成此操作
将以下行添加到tsconfig.json:
{
"compilerOptions": {
"declaration": true
},
}
然后检查在package.json中是否正确设置了声明路径:
"types": "dist/main.d.ts", // assuming main.ts is your entry point
并删除src目录中不必要的types.d.ts。