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/, }, ], }, }