fontcolor_theme
Deepkit Runtime Types

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/,
       },
    ],
  },
}
English中文 (Chinese)한국어 (Korean)日本語 (Japanese)Deutsch (German)