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

cus*_*sti 5 typescript tsc tsconfig

tl;博士在底部

\n\n

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

\n\n
server/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tsconfig.json\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 package.json\nclient/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 tsconfig.json\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 package.json\nshared/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Requests.ts\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Responses.ts\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
import { ILoginRequest } from \'@shared/Requests\';\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

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

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

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

\n\n

太长了;博士

\n\n

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

\n