Erste Schritte
Um Deepkits Runtime Type System zu installieren, werden zwei Packages benötigt: der Deepkit Type Compiler und das Deepkit Type Package selbst. Der Type Compiler ist ein TypeScript Transformer, der Runtime Type Information aus TypeScript Types generiert. Das Type Package enthält die Runtime Virtual Machine und Type Annotations sowie viele nützliche Funktionen für die Arbeit mit Types.
Installation
npm install --save @deepkit/type npm install --save-dev @deepkit/type-compiler typescript ts-node
Runtime Type Information wird nicht standardmäßig generiert. Dazu muss "reflection": true
in der Datei tsconfig.json
gesetzt werden, um sie zu aktivieren.
Wenn Decorators verwendet werden sollen, muss "experimentalDecorators": true
in tsconfig.json
aktiviert sein. Das ist nicht zwingend erforderlich, um mit @deepkit/type
zu arbeiten, aber für bestimmte Funktionen anderer Deepkit Libraries und im Deepkit Framework notwendig.
Datei: tsconfig.json
{ "compilerOptions": { "module": "CommonJS", "target": "es6", "moduleResolution": "node", "experimentalDecorators": true }, "reflection": true }
Schreiben Sie Ihren ersten Code mit Runtime Type Information:
Datei: app.ts
import { cast, MinLength, ReflectionClass } from '@deepkit/type'; interface User { username: string & MinLength<3>; birthDate?: Date; } const user = cast<User>({ username: 'Peter', birthDate: '2010-10-10T00:00:00Z' }); console.log(user); const reflection = ReflectionClass.from<User>(); console.log(reflection.getProperty('username').type);
Und führen Sie es mit ts-node
aus:
./node_modules/.bin/ts-node app.ts
Interaktives Beispiel
Hier ist ein CodeSandbox-Beispiel: https://codesandbox.io/p/sandbox/deepkit-runtime-types-fjmc2f?file=index.ts
Type Compiler
TypeScript selbst erlaubt es nicht, den Type Compiler über eine tsconfig.json
zu konfigurieren. Dazu muss entweder die TypeScript Compiler API direkt verwendet werden oder ein Build-System wie Webpack mit ts-loader. Um Deepkit-Nutzern diesen umständlichen Weg zu ersparen, installiert sich der Deepkit Type Compiler automatisch in node_modules/typescript
, sobald @deepkit/type-compiler
installiert ist (dies geschieht über NPM Install Hooks).
Dadurch haben alle Build-Tools, die auf das lokal installierte TypeScript (das in node_modules/typescript
) zugreifen, den Type Compiler automatisch aktiviert. So funktionieren tsc, Angular, webpack, ts-node und einige andere Tools automatisch mit dem Deepkit Type Compiler.
Falls der Type Compiler nicht automatisch erfolgreich installiert werden konnte (z. B. weil NPM Install Hooks deaktiviert sind), kann dies manuell mit folgendem Befehl erfolgen:
node_modules/.bin/deepkit-type-install
Beachten Sie, dass deepkit-type-install
ausgeführt werden muss, wenn die lokale typescript-Version aktualisiert wurde (z. B. wenn sich die typescript-Version in package.json geändert hat und npm install
ausgeführt wird).
Webpack
Wenn Sie den Type Compiler in einem webpack-Build verwenden möchten, können Sie dies mit dem ts-loader
Package tun (oder mit einem anderen TypeScript Loader, der Transformer Registration unterstützt).
Datei: webpack.config.js
const typeCompiler = require('@deepkit/type-compiler'); module.exports = { entry: './app.ts', module: { rules: [ { test: /\.tsx?$/, use: { loader: 'ts-loader', options: { //aktiviert den Type Compiler von @deepkit/type getCustomTransformers: (program, getProgram) => ({ before: [typeCompiler.transformer], afterDeclarations: [typeCompiler.declarationTransformer], }), } }, exclude: /node_modules/, }, ], }, }