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';
可能的。