TypeDI是一個TypeScript和JavaScript的依賴注入庫。
*****
## 安裝
> 注意:這個安裝指南是針對TypeScript的使用,如果你想使用TypeDI而不使用Typescript,請閱讀JavaScript的入門指南。
要開始使用TypeDI,請通過NPM安裝所需的包。
```
npm install typedi reflect-metadata
```
在你的應用程序的第一行導入`reflect-metadata`包。
```
import 'reflect-metadata';
// 在你導入reflect-metadata包之后
// 再接著你的其他導入和初始化代碼!
```
作為最后一步,你需要在你的Typescript配置中啟用發射裝飾器元數據( emitting decorator metadata)。在你的`tsconfig.json`文件中的`compilerOptions`鍵下添加這兩行。
```
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
```
現在你已經準備好使用TypeDI與Typescript了
!
*****
## 基本用法
最基本的用法是請求一個類定義的實例。TypeDI將檢查該類的實例是否已經被創建并返回緩存的版本,或者它將創建一個新的實例,緩存并返回它。
```
import { Container, Service } from 'typedi';
@Service()
class ExampleInjectedService {
printMessage() {
console.log('I am alive!');
}
}
@Service()
class ExampleService {
constructor(
// 因為我們用@Service()裝飾器注解了ExampleInjectedService
// 當從TypeDI請求ExampleService類時
// TypeDI將自動在這里注入一個ExampleInjectedService的實例。
public injectedService: ExampleInjectedService
) {}
}
const serviceInstance = Container.get(ExampleService);
// 我們從TypeDI請求一個ExampleService的實例
serviceInstance.injectedService.printMessage();
// 在console打印"I am alive!"
```