在separat TypeScript项目之间共享接口

时间:2017-11-27 23:50:04

标签: typescript tsc tsconfig

tl;底部是博士

我有一个用TypeScript编写的网络服务器和一个用TypeScript编写的客户端SPA。我的想法是共享请求和响应数据的接口,以充分利用" type-safety"。 我的大问题是客户端和服务器是兄弟文件夹,每个文件夹都有自己的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.jsontsc仍为输出 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;博士

我希望通过兄弟文件夹(" shared")共享两个TS项目("服务器"和#34;客户端")之间的接口,但是可以'弄清楚如何配置tsc以使import { ILoginRequest } from '@shared/Requests';成为可能。

0 个答案:

没有答案