gpt4 book ai didi

typescript - npm 如何发布 typescript 接口(interface)定义

转载 作者:行者123 更新时间:2023-12-05 08:06:39 26 4
gpt4 key购买 nike

在过去的 3-4 天里,我一直在尝试解决这个问题,通过谷歌搜索和大量阅读,但我没有看到任何包含我的用例的示例。我想npm 发布 一个包含其类型定义的库。

我才真正开始做 TS,因为其他团队需要我的库来支持打字。

所以让我尽可能多(和尽可能少)地添加我认为的细节:

tsconfig.json:

{
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"allowUmdGlobalAccess": true,
"baseUrl": ".",
"declaration": true,
"declarationMap": true,
"forceConsistentCasingInFileNames": true,
"jsx": "react",
"module": "commonjs",
"noImplicitAny": true,
"noUnusedParameters": true,
"noUnusedLocals": true,
"outDir": "./dist/",
"paths": {
},
"sourceMap": true,
"strict": true,
"target": "es6",
},
"include": [
"./src"
]
}

package.json:

  "main": "dist/index.js",
"scripts": {
"tsc": "tsc",
"prepack": "npm run clean && npm run tsc",
},
"types": "./dist/index.d.ts",

src/index.ts(内置于 dist/index.js + dist/index.d.ts):

export { IAction, IState } from './types';

src/types(内置于 dist/types.js + dist/types.d.ts):

import { Map } from 'immutable';

export interface IAction {
type: string;
payload: object;
}

export interface IState extends Map<string, Map<string, any>> {
}

我在这个 repo 中有其他代码可以毫无问题地使用它们。 tsc 不会提示并构建它们。

目前,我在我的其他项目中执行 npm packnpm install ../path/to/my/file-0.0.1.tgz。然后当我想使用我的接口(interface)时(在本例中,是一个 redux reducer):

import { IAction, IState } from 'my-lib';  // <-- match my package.json name

const reducer = (state: IState, action: IAction) => {
...
}

我收到以下错误:

error TS2709: Cannot use namespace 'IState' as a type.
error TS2709: Cannot use namespace 'IAction' as a type.

我真的想不通为什么会这样。为了构建我的定义文件,我还需要执行其他步骤吗?理想情况下,我宁愿不必手动构建它。

如果我需要提供更多详细信息,请告诉我。

感谢您的帮助和耐心阅读。

最佳答案

您需要在 package.json 中包含如下内容

  ...
"main": "dist/index.js",
"typings": "dist/index.d.ts",
"source": "lib/index.ts",
"files": [
"dist",
"lib"
],
...

关于typescript - npm 如何发布 typescript 接口(interface)定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59742688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com