在单独的 TypeScript 项目之间共享接口

2024-04-06

tl;博士在底部

我有一个用 TypeScript 编写的网络服务器和一个用 TypeScript 编写的客户端 SPA。我的想法是共享请求和响应数据的接口,以充分利用“类型安全”。 我的大问题是客户端和服务器是同级文件夹,每个文件夹都有自己的 package.json、tsconfig.json、src-dir 等。 我想要的是这样的:

server/
├── src/
├── build/
├── tsconfig.json
└── package.json
client/
├── src/
├── build/
├── tsconfig.json
└── package.json
shared/
├── Requests.ts
└── Responses.ts

我希望能够像这样导入共享接口:

import { ILoginRequest } from '@shared/Requests';

我已经配置了我的tsconfig.json but tsc仍然输出error TS2307: Cannot find module '@shared/Requests'.:

以客户端(React)配置为例:

{
  "compilerOptions": {
    "outDir": "build/dist",
    "module": "esnext",
    "target": "es5",
    "lib": ["es6", "dom"],
    "sourceMap": true,
    "allowJs": true,
    "jsx": "react",
    "moduleResolution": "node",
    "rootDirs": [
      "src",
      "../shared"
    ],
    "forceConsistentCasingInFileNames": true,
    "noImplicitReturns": true,
    "noImplicitThis": true,
    "noImplicitAny": true,
    "strictNullChecks": true,
    "suppressImplicitAnyIndexErrors": true,
    "noUnusedLocals": true,
    "baseUrl": ".",
    "paths": {
      "@shared/*": [
        "../shared/*"        
      ],
      "*": [
        "node_modules/*",
        "src/types/*"
      ]
    }
  },
  "exclude": [
    "node_modules",
    "build",
    "scripts",
    "acceptance-tests",
    "webpack",
    "jest",
    "src/setupTests.ts"
  ]
}

我究竟做错了什么?我的想法可行吗?提前致谢!

tl;dr

我想通过同级文件夹(“共享”)共享两个 TS 项目(“服务器”和“客户端”)之间的接口,但不知道如何配置tsc做类似的东西import { ILoginRequest } from '@shared/Requests';可能的。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在单独的 TypeScript 项目之间共享接口 的相关文章

随机推荐