

Dies ist der AWS CDK v2-Entwicklerhandbuch. Das ältere CDK v1 wurde am 1. Juni 2022 gewartet und der Support wurde am 1. Juni 2023 eingestellt.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Arbeiten mit dem AWS CDK in JavaScript
<a name="work-with-cdk-javascript"></a>

JavaScript ist eine vollständig unterstützte Client-Sprache für das AWS CDK und gilt als stabil. Bei der Arbeit mit dem AWS Cloud Development Kit (AWS CDK) werden vertraute Tools wie [Node.js](https://nodejs.org/) und der Node Package Manager (`npm`) JavaScript verwendet. Sie können auch [Yarn](https://yarnpkg.com/) verwenden, wenn Sie möchten, obwohl die Beispiele in diesem Handbuch NPM verwenden. [Die Module, aus denen die AWS Construct-Bibliothek besteht, werden über das NPM-Repository npmjs.org vertrieben.](https://www.npmjs.com/)

Sie können jeden Editor oder jede IDE verwenden. Viele AWS CDK-Entwickler verwenden [Visual Studio Code](https://code.visualstudio.com/) (oder sein Open-Source-Äquivalent [VSCodium](https://vscodium.com/)), das eine gute Unterstützung für bietet. JavaScript

## Fangen Sie an mit JavaScript
<a name="javascript-prerequisites"></a>

Um mit dem AWS CDK arbeiten zu können, benötigen Sie ein AWS Konto und Anmeldeinformationen und müssen Node.js und das AWS CDK Toolkit installiert haben. Weitere Informationen finden Sie unter [Erste Schritte mit dem CDK](getting-started.md). AWS 

JavaScript AWS Für CDK-Anwendungen sind darüber hinaus keine weiteren Voraussetzungen erforderlich.

**Anmerkung**  
Veraltete Sprachversionen von Drittanbietern: Die Sprachversion wird nur bis zu dem Zeitpunkt unterstützt, an dem der Anbieter oder die Community das EOL (End Of Life) festgelegt hat, und kann sich nach vorheriger Ankündigung ändern.

## Erstellen eines Projekts
<a name="javascript-newproject"></a>

Sie erstellen ein neues AWS CDK-Projekt, indem Sie es in einem leeren Verzeichnis aufrufen`cdk init`. Verwenden Sie die `--language` Option und geben Sie an: `javascript`

```
$ mkdir my-project
$ cd my-project
$ cdk init app --language javascript
```

Beim Erstellen eines Projekts werden auch das [aws-cdk-lib](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib-readme.html)Modul und seine Abhängigkeiten installiert.

 `cdk init`verwendet den Namen des Projektordners, um verschiedene Elemente des Projekts zu benennen, einschließlich Klassen, Unterordnern und Dateien. Bindestriche im Ordnernamen werden in Unterstriche umgewandelt. Ansonsten sollte der Name jedoch die Form eines JavaScript Bezeichners haben; er sollte beispielsweise nicht mit einer Zahl beginnen oder Leerzeichen enthalten.

## Lokal verwenden `cdk`
<a name="javascript-local"></a>

In diesem Handbuch wird größtenteils davon ausgegangen, dass Sie das CDK Toolkit global (`npm install -g aws-cdk`) installieren, und die bereitgestellten Befehlsbeispiele (wie`cdk synth`) folgen dieser Annahme. Dieser Ansatz macht es einfach, das CDK Toolkit auf dem neuesten Stand zu halten, und da das CDK einen strikten Ansatz zur Abwärtskompatibilität verfolgt, besteht im Allgemeinen nur ein geringes Risiko, immer die neueste Version zu verwenden.

Einige Teams ziehen es vor, alle Abhängigkeiten innerhalb jedes Projekts anzugeben, einschließlich Tools wie dem CDK Toolkit. Auf diese Weise können Sie solche Komponenten bestimmten Versionen zuordnen und sicherstellen, dass alle Entwickler in Ihrem Team (und Ihrer CI/CD Umgebung) genau diese Versionen verwenden. Dadurch wird eine mögliche Änderungsquelle vermieden, was dazu beiträgt, Builds und Bereitstellungen konsistenter und wiederholbarer zu gestalten.

Das CDK enthält eine Abhängigkeit für das CDK-Toolkit in den JavaScript Projektvorlagen. Wenn Sie also diesen Ansatz verwenden möchten, müssen Sie keine Änderungen an Ihrem Projekt vornehmen. `package.json` Sie müssen lediglich leicht unterschiedliche Befehle zum Erstellen Ihrer App und zum Ausgeben von Befehlen verwenden. `cdk`


| Operation | Verwenden Sie globale Tools | Verwenden Sie lokale Tools | 
| --- | --- | --- | 
|   **Projekt initialisieren**   |   `cdk init --language javascript`   |   `npx aws-cdk init --language javascript`   | 
|   **Führen Sie den Befehl CDK Toolkit aus**   |   `cdk …​`   |   `npm run cdk …​` oder `npx aws-cdk …​`   | 

 `npx aws-cdk`führt die lokal im aktuellen Projekt installierte Version des CDK Toolkits aus, falls vorhanden, und greift dabei auf die globale Installation zurück, falls vorhanden. Falls keine globale Installation vorhanden ist, wird eine temporäre Kopie des CDK Toolkits `npx` heruntergeladen und ausgeführt. Sie können eine beliebige Version des CDK Toolkits mit der folgenden Syntax angeben: prints. `@` `npx aws-cdk@1.120 --version` `1.120.0`

**Tipp**  
Richten Sie einen Alias ein, damit Sie den `cdk` Befehl mit einer lokalen CDK Toolkit-Installation verwenden können.  

```
$ alias cdk="npx aws-cdk"
```

```
doskey cdk=npx aws-cdk $*
```

## AWS Construct Library-Module verwalten
<a name="javascript-managemodules"></a>

Verwenden Sie den Node Package Manager (`npm`), um AWS Construct Library-Module für Ihre Apps sowie andere Pakete, die Sie benötigen, zu installieren und zu aktualisieren. (Sie können `yarn` stattdessen verwenden, `npm` wenn Sie es vorziehen.) `npm`installiert auch die Abhängigkeiten für diese Module automatisch.

Die meisten AWS CDK-Konstrukte befinden sich im CDK-Hauptpaket mit dem Namen. Dies ist eine Standardabhängigkeit in neuen Projekten`aws-cdk-lib`, die von erstellt wurden. `cdk init` Module der „experimentellen“ AWS Construct Library, bei denen sich übergeordnete Konstrukte noch in der Entwicklung befinden, werden wie benannt. `aws-cdk-lib/<SERVICE-NAME>-alpha` Der Dienstname hat ein aws-Präfix*.* Wenn Sie sich des Namens eines Moduls nicht sicher sind, [suchen Sie auf NPM danach](https://www.npmjs.com/search?q=%40aws-cdk).

**Anmerkung**  
Die [CDK-API-Referenz](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html) zeigt auch die Paketnamen.

Mit dem folgenden Befehl wird beispielsweise das experimentelle Modul für AWS CodeStar installiert.

```
npm install @aws-cdk/aws-codestar-alpha
```

Die Construct Library-Unterstützung einiger Dienste erfolgt in mehr als einem Namespace. Außerdem gibt es `aws-route53` beispielsweise drei zusätzliche Amazon Route 53-Namespaces,`aws-route53-targets`, `aws-route53-patterns` und. `aws-route53resolver`

Die Abhängigkeiten Ihres Projekts werden in verwaltet. `package.json` Sie können diese Datei bearbeiten, um einige oder alle Ihrer Abhängigkeiten für eine bestimmte Version zu sperren oder um zu ermöglichen, dass sie unter bestimmten Kriterien auf neuere Versionen aktualisiert werden. Um die NPM-Abhängigkeiten Ihres Projekts gemäß den Regeln, die Sie angegeben haben, auf die neueste zulässige Version zu aktualisieren: `package.json`

```
npm update
```

In JavaScript importieren Sie Module in Ihren Code unter demselben Namen, den Sie für die Installation mit NPM verwenden. Wir empfehlen die folgenden Methoden, wenn Sie AWS CDK-Klassen und AWS Construct Library-Module in Ihre Anwendungen importieren. Das Befolgen dieser Richtlinien trägt dazu bei, dass Ihr Code mit anderen AWS CDK-Anwendungen konsistent und verständlicher ist.
+ Verwenden Sie Direktiven`require()`, keine Direktiven im Stil von ES6 -style`import`. Ältere Versionen von Node.js unterstützen keine ES6 Importe, sodass die Verwendung der älteren Syntax weitgehend kompatibel ist. (Wenn Sie wirklich ES6 Importe verwenden möchten, verwenden Sie [esm](https://www.npmjs.com/package/esm), um sicherzustellen, dass Ihr Projekt mit allen unterstützten Versionen von Node.js kompatibel ist.)
+ Im Allgemeinen importieren Sie einzelne Klassen von`aws-cdk-lib`.

  ```
  const { App, Stack } = require('aws-cdk-lib');
  ```
+ Wenn Sie viele Klassen von benötigen`aws-cdk-lib`, können Sie einen Namespace-Alias von verwenden, `cdk` anstatt die einzelnen Klassen zu importieren. Vermeiden Sie es, beides zu tun.

  ```
  const cdk = require('aws-cdk-lib');
  ```
+ Im Allgemeinen sollten Sie AWS Construct-Bibliotheken mit kurzen Namespace-Aliasen importieren.

  ```
  const { s3 } = require('aws-cdk-lib/aws-s3');
  ```

## Verwaltung von Abhängigkeiten in JavaScript
<a name="work-with-cdk-javascript-dependencies"></a>

In JavaScript CDK-Projekten werden Abhängigkeiten in der `package.json` Datei im Hauptverzeichnis des Projekts angegeben. Die AWS CDK-Kernmodule befinden sich in einem einzigen `NPM` Paket namens. `aws-cdk-lib`

Wenn Sie ein Paket mit installieren`npm install`, zeichnet NPM das Paket `package.json` für Sie auf.

Wenn Sie möchten, können Sie Yarn anstelle von NPM verwenden. Das CDK unterstützt jedoch nicht den plug-and-play Modus von Yarn, der in Yarn 2 der Standardmodus ist. Fügen Sie der `.yarnrc.yml` Datei Ihres Projekts Folgendes hinzu, um diese Funktion zu deaktivieren.

```
nodeLinker: node-modules
```

### CDK-Anwendungen
<a name="work-with-cdk-javascript-dependencies-apps"></a>

Im Folgenden finden Sie eine `package.json` Beispieldatei, die mit dem `cdk init --language typescript` Befehl generiert wurde. Die generierte Datei für JavaScript ist ähnlich, nur ohne die TypeScript zugehörigen Einträge.

```
{
  "name": "my-package",
  "version": "0.1.0",
  "bin": {
    "my-package": "bin/my-package.js"
  },
  "scripts": {
    "build": "tsc",
    "watch": "tsc -w",
    "test": "jest",
    "cdk": "cdk"
  },
  "devDependencies": {
    "@types/jest": "^26.0.10",
    "@types/node": "10.17.27",
    "jest": "^26.4.2",
    "ts-jest": "^26.2.0",
    "aws-cdk": "2.16.0",
    "ts-node": "^9.0.0",
    "typescript": "~3.9.7"
  },
  "dependencies": {
    "aws-cdk-lib": "2.16.0",
    "constructs": "^10.0.0",
    "source-map-support": "^0.5.16"
  }
}
```

Für bereitstellbare CDK-Apps `aws-cdk-lib` muss dies im `dependencies` Abschnitt von angegeben werden. `package.json` Sie können die Versionsnummer mit einem Caret-Zeichen (^) angeben, dass Sie neuere Versionen als die angegebene akzeptieren, sofern sie sich in derselben Hauptversion befinden.

Geben Sie für experimentelle Konstrukte die exakten Versionen der Alpha-Konstruktbibliotheksmodule an, bei denen sich APIs das ändern kann. Verwenden Sie nicht ^ oder \$1, da spätere Versionen dieser Module API-Änderungen mit sich bringen können, die Ihre App beschädigen können.

Geben Sie im `devDependencies` Abschnitt von die Versionen der Bibliotheken und Tools an, die Sie zum `jest` Testen Ihrer App benötigen (z. B. das Test-Framework)`package.json`. Verwenden Sie optional ^, um anzugeben, dass spätere kompatible Versionen zulässig sind.

### Konstruktbibliotheken von Drittanbietern
<a name="work-with-cdk-javascript-dependencies-libraries"></a>

Wenn Sie eine Konstruktbibliothek entwickeln, geben Sie deren Abhängigkeiten mithilfe einer Kombination aus den `devDependencies` Abschnitten `peerDependencies` und an, wie in der folgenden `package.json` Beispieldatei gezeigt.

```
{
  "name": "my-package",
  "version": "0.0.1",
  "peerDependencies": {
    "aws-cdk-lib": "^2.14.0",
    "@aws-cdk/aws-appsync-alpha": "2.10.0-alpha",
    "constructs": "^10.0.0"
  },
  "devDependencies": {
    "aws-cdk-lib": "2.14.0",
    "@aws-cdk/aws-appsync-alpha": "2.10.0-alpha",
    "constructs": "10.0.0",
    "jsii": "^1.50.0",
    "aws-cdk": "^2.14.0"
  }
}
```

Verwenden Sie in `peerDependencies` ein Caret-Zeichen (^), um die niedrigste Version anzugeben`aws-cdk-lib`, mit der Ihre Bibliothek arbeitet. Dadurch wird die Kompatibilität Ihrer Bibliothek mit einer Reihe von CDK-Versionen maximiert. Geben Sie genaue Versionen für Alpha-Construct-Bibliotheksmodule an, bei denen sich APIs das ändern kann. `peerDependencies`Durch die Verwendung wird sichergestellt, dass nur eine Kopie aller CDK-Bibliotheken im `node_modules` Baum vorhanden ist.

Geben Sie `devDependencies` unter die Tools und Bibliotheken an, die Sie zum Testen benötigen, optional mit ^, um anzugeben, dass spätere kompatible Versionen zulässig sind. Geben Sie genau (ohne ^ oder \$1) die niedrigsten Versionen `aws-cdk-lib` und andere CDK-Pakete an, mit denen Sie angeben, dass Ihre Bibliothek kompatibel ist. Diese Vorgehensweise stellt sicher, dass Ihre Tests mit diesen Versionen ausgeführt werden. Wenn Sie also versehentlich eine Funktion verwenden, die nur in neueren Versionen zu finden ist, können Ihre Tests sie catch.

**Warnung**  
 `peerDependencies`werden nur von NPM 7 und höher automatisch installiert. Wenn Sie NPM 6 oder früher verwenden oder wenn Sie Yarn verwenden, müssen Sie die Abhängigkeiten Ihrer Abhängigkeiten in einbeziehen. `devDependencies` Andernfalls werden sie nicht installiert und Sie erhalten eine Warnung vor ungelösten Peer-Abhängigkeiten.

### Abhängigkeiten installieren und aktualisieren
<a name="work-with-cdk-javascript-dependencies-install"></a>

Führen Sie den folgenden Befehl aus, um die Abhängigkeiten Ihres Projekts zu installieren.

**Example**  

```
# Install the latest version of everything that matches the ranges in 'package.json'
npm install

# Install the same exact dependency versions as recorded in 'package-lock.json'
npm ci
```

```
# Install the latest version of everything that matches the ranges in 'package.json'
yarn upgrade

# Install the same exact dependency versions as recorded in 'yarn.lock'
yarn install --frozen-lockfile
```

Um die installierten Module zu aktualisieren, können die vorherigen `yarn upgrade` Befehle `npm install` und verwendet werden. Mit beiden Befehlen werden die Pakete `node_modules` auf die neuesten Versionen aktualisiert, die den Regeln von entsprechen`package.json`. Sie aktualisieren `package.json` sich jedoch nicht von selbst, was Sie möglicherweise tun sollten, um eine neue Mindestversion festzulegen. Wenn Sie Ihr Paket auf hosten GitHub, können Sie [Dependabot-Versionsupdates](https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuring-dependabot-version-updates) so konfigurieren, dass sie automatisch aktualisiert werden. `package.json` Als alternative Vorgehensweise verwenden Sie [npm-check-updates](https://www.npmjs.com/package/npm-check-updates).

**Wichtig**  
Standardmäßig wählen NPM und Yarn bei der Installation oder Aktualisierung von Abhängigkeiten die neueste Version jedes Pakets aus, das die in angegebenen Anforderungen erfüllt. `package.json` Es besteht immer das Risiko, dass diese Versionen beschädigt werden (entweder versehentlich oder absichtlich). Testen Sie gründlich, nachdem Sie die Abhängigkeiten Ihres Projekts aktualisiert haben.

## AWS CDK-Idiome in JavaScript
<a name="javascript-cdk-idioms"></a>

### Props
<a name="javascript-props"></a>

Alle AWS Construct-Library-Klassen werden mit drei Argumenten instanziiert: dem *Bereich*, in dem das Konstrukt definiert wird (sein übergeordnetes Objekt im Konstruktbaum), einer *ID* und *props*, einem Bündel von key/value Paaren, das das Konstrukt verwendet, um die von ihm erstellten Ressourcen zu konfigurieren. AWS Andere Klassen und Methoden verwenden ebenfalls das Muster „Bündel von Attributen“ für Argumente.

Wenn Sie eine IDE oder einen Editor verwenden, der über eine gute JavaScript Autovervollständigung verfügt, können Sie vermeiden, dass Eigenschaftsnamen falsch geschrieben werden. Wenn ein Konstrukt eine `encryptionKeys` Eigenschaft erwartet und Sie sie buchstabieren`encryptionkeys`, haben Sie bei der Instanziierung des Konstrukts nicht den gewünschten Wert übergeben. Dies kann bei der Synthese zu einem Fehler führen, wenn die Eigenschaft erforderlich ist, oder dazu führen, dass die Eigenschaft stillschweigend ignoriert wird, wenn sie optional ist. In letzterem Fall erhalten Sie möglicherweise ein Standardverhalten, das Sie überschreiben wollten. Seien Sie hier besonders vorsichtig.

Wenn Sie einer AWS Construct Library-Klasse eine Unterklasse zuordnen (oder eine Methode überschreiben, die ein Argument wie Requisiten verwendet), möchten Sie möglicherweise zusätzliche Eigenschaften für Ihren eigenen Gebrauch akzeptieren. Diese Werte werden von der übergeordneten Klasse oder überschriebenen Methode ignoriert, da in diesem Code nie auf sie zugegriffen wird. Sie können also generell alle Requisiten weitergeben, die Sie erhalten haben.

Eine future Version des AWS CDK könnte zufällig eine neue Immobilie mit einem Namen hinzufügen, den Sie für Ihre eigene Immobilie verwendet haben. Wenn Sie den Wert, den Sie erhalten, in der Vererbungskette weiterreichen, kann dies zu unerwartetem Verhalten führen. Es ist sicherer, eine oberflächliche Kopie der Requisiten weiterzugeben, die Sie erhalten haben, wenn Ihr Eigentum entfernt oder auf `undefined` Null gesetzt wurde. Beispiel:

```
super(scope, name, {...props, encryptionKeys: undefined});
```

Sie können Ihre Eigenschaften auch so benennen, dass klar ist, dass sie zu Ihrem Konstrukt gehören. Auf diese Weise ist es unwahrscheinlich, dass sie in future AWS CDK-Versionen mit Eigenschaften kollidieren werden. Wenn es viele von ihnen gibt, verwenden Sie ein einzelnes Objekt mit dem entsprechenden Namen, um sie zu speichern.

### Fehlende Werte
<a name="javascript-missing-values"></a>

Fehlende Werte in einem Objekt (z. B.`props`) haben den Wert in. `undefined` JavaScript Für den Umgang mit diesen gelten die üblichen Techniken. Ein gängiges Idiom für den Zugriff auf eine Eigenschaft mit einem möglicherweise undefinierten Wert lautet beispielsweise wie folgt:

```
// a may be undefined, but if it is not, it may have an attribute b
// c is undefined if a is undefined, OR if a doesn't have an attribute b
let c = a && a.b;
```

Wenn es aber `a` auch noch einen anderen „falschen“ Wert geben könnte, ist es besser`undefined`, den Test expliziter zu machen. Hier machen wir uns die Tatsache zunutze, dass `null` und gleich `undefined` sind, um beide gleichzeitig zu testen:

```
let c = a == null ? a : a.b;
```

**Tipp**  
Node.js 14.0 und höher unterstützen neue Operatoren, die den Umgang mit undefinierten Werten vereinfachen können. Weitere Informationen finden Sie in den [optionalen Vorschlägen zum Verketten](https://github.com/tc39/proposal-optional-chaining/blob/master/README.md) und Zusammenführen von [Nullwerten](https://github.com/tc39/proposal-nullish-coalescing/blob/master/README.md).

## Verwenden von Beispielen mit TypeScript JavaScript
<a name="javascript-using-typescript-examples"></a>

 [TypeScript](https://www.typescriptlang.org/)ist die Sprache, die wir zur Entwicklung des AWS CDK verwenden, und es war die erste Sprache, die für die Entwicklung von Anwendungen unterstützt wurde. Daher sind viele verfügbare AWS CDK-Codebeispiele in dieser Sprache geschrieben. TypeScript Diese Codebeispiele können eine gute Ressource für JavaScript Entwickler sein. Sie müssen nur die TypeScript -spezifischen Teile des Codes entfernen.

TypeScript In Codefragmenten werden häufig die `export` Schlüsselwörter new ECMAScript `import` und verwendet, um Objekte aus anderen Modulen zu importieren und die Objekte so zu deklarieren, dass sie außerhalb des aktuellen Moduls verfügbar gemacht werden. Node.js hat gerade damit begonnen, diese Schlüsselwörter in seinen neuesten Versionen zu unterstützen. Abhängig von der Version von Node.js, die Sie verwenden (oder unterstützen möchten), können Sie Importe und Exporte so umschreiben, dass sie die ältere Syntax verwenden.

Importe können durch Aufrufe der `require()` Funktion ersetzt werden.

**Example**  

```
import * as cdk from 'aws-cdk-lib';
import { Bucket, BucketPolicy } from 'aws-cdk-lib/aws-s3';
```

```
const cdk = require('aws-cdk-lib');
const { Bucket, BucketPolicy } = require('aws-cdk-lib/aws-s3');
```

Exporte können dem `module.exports` Objekt zugewiesen werden.

**Example**  

```
export class Stack1 extends cdk.Stack {
  // ...
}

export class Stack2 extends cdk.Stack {
  // ...
}
```

```
class Stack1 extends cdk.Stack {
  // ...
}

class Stack2 extends cdk.Stack {
  // ...
}

module.exports = { Stack1, Stack2 }
```

**Anmerkung**  
Eine Alternative zur Verwendung der Importe und Exporte im alten Stil ist die Verwendung des [ESM-Moduls.](https://www.npmjs.com/package/esm)

Sobald Sie die Importe und Exporte sortiert haben, können Sie sich mit dem eigentlichen Code befassen. Möglicherweise stoßen Sie auf diese häufig verwendeten Funktionen TypeScript :
+ Geben Sie Anmerkungen ein
+ Schnittstellendefinitionen
+ Typkonvertierungen/Umwandlungen
+ Zugriffsmodifikatoren

Typanmerkungen können für Variablen, Klassenmitglieder, Funktionsparameter und Funktionsrückgabetypen bereitgestellt werden. Bei Variablen, Parametern und Elementen werden Typen angegeben, indem hinter dem Bezeichner ein Doppelpunkt und der Typ stehen. Funktionsrückgabewerte folgen der Funktionssignatur und bestehen aus einem Doppelpunkt und dem Typ.

Um Code mit Typanmerkungen in umzuwandeln JavaScript, entfernen Sie den Doppelpunkt und den Typ. Klassenmitglieder müssen einen bestimmten Wert in JavaScript haben. Setzen Sie sie auf, `undefined` wenn sie nur eine Typanmerkung enthalten. TypeScript

**Example**  

```
var encrypted: boolean = true;

class myStack extends cdk.Stack {
    bucket: s3.Bucket;
    // ...
}

function makeEnv(account: string, region: string) : object {
    // ...
}
```

```
var encrypted = true;

class myStack extends cdk.Stack {
    bucket = undefined;
    // ...
}

function makeEnv(account, region) {
    // ...
}
```
In werden Schnittstellen verwendet TypeScript, um Bündeln von erforderlichen und optionalen Eigenschaften und ihren Typen einen Namen zu geben. Anschließend können Sie den Schnittstellennamen als Typanmerkung verwenden. TypeScript stellt sicher, dass das Objekt, das Sie beispielsweise als Argument für eine Funktion verwenden, die erforderlichen Eigenschaften der richtigen Typen hat.  

```
interface myFuncProps {
    code: lambda.Code,
    handler?: string
}
```

JavaScript hat keine Schnittstellenfunktion. Wenn Sie also die Typanmerkungen entfernt haben, löschen Sie die Schnittstellendeklarationen vollständig.

*Wenn eine Funktion oder Methode einen Allzwecktyp (z. B.`object`) zurückgibt, Sie diesen Wert aber als spezifischeren untergeordneten Typ behandeln möchten, um auf Eigenschaften oder Methoden zuzugreifen, die nicht Teil der Schnittstelle des allgemeineren Typs sind, TypeScript können Sie den Wert mit einem Typ- oder `as` Schnittstellennamen umwandeln.* JavaScript unterstützt (oder benötigt) dies nicht, also entfernen Sie einfach den folgenden `as` Bezeichner. Eine weniger gebräuchliche Umwandlungssyntax besteht darin`<LikeThis>`, einen Typnamen in Klammern zu verwenden. Auch diese Umwandlungen müssen entfernt werden.

Schließlich werden die Zugriffsmodifizierer `public``protected`, und `private` für Mitglieder von Klassen TypeScript unterstützt. Alle Klassenmitglieder JavaScript sind öffentlich. Entfernen Sie diese Modifikatoren einfach, wo immer Sie sie sehen.

Zu wissen, wie man diese TypeScript Funktionen identifiziert und entfernt, trägt wesentlich dazu bei, kurze TypeScript Ausschnitte an sie anzupassen. JavaScript Es kann jedoch unpraktisch sein, längere TypeScript Beispiele auf diese Weise zu konvertieren, da sie mit größerer Wahrscheinlichkeit andere Funktionen verwenden. TypeScript Für diese Situationen empfehlen wir [Sucrase](https://github.com/alangpierce/sucrase). Sucrase wird sich nicht beschweren, wenn Code beispielsweise eine undefinierte Variable verwendet, wie es der Fall wäre. `tsc` Wenn es syntaktisch gültig ist, kann Sucrase es mit wenigen Ausnahmen in übersetzen. JavaScript Dies macht es besonders nützlich für die Konvertierung von Snippets, die möglicherweise nicht eigenständig ausgeführt werden können.

## Migration zu TypeScript
<a name="javascript-to-typescript"></a>

Viele JavaScript Entwickler wechseln dazu [TypeScript](https://www.typescriptlang.org/), wenn ihre Projekte größer und komplexer werden. TypeScript ist eine Obermenge von JavaScript — der gesamte JavaScript Code ist gültiger TypeScript Code, sodass keine Änderungen an Ihrem Code erforderlich sind — und es ist auch eine unterstützte CDK-Sprache. AWS Typanmerkungen und andere TypeScript Funktionen sind optional und können zu Ihrer AWS CDK-App hinzugefügt werden, sobald Sie Wert darin finden. TypeScript bietet dir außerdem frühzeitigen Zugriff auf neue JavaScript Funktionen wie optionales Chaining und Nullish-Coalescing, bevor sie fertiggestellt sind — und das, ohne dass du Node.js aktualisieren musst.

TypeScriptDie „formbasierten“ Schnittstellen, die Bündel erforderlicher und optionaler Eigenschaften (und ihrer Typen) innerhalb eines Objekts definieren, ermöglichen das Auffinden häufiger Fehler beim Schreiben des Codes und erleichtern es Ihrer IDE, zuverlässige Autocomplete-Funktionen und andere Codierungshinweise in Echtzeit bereitzustellen.

Das Eincodieren TypeScript erfordert einen zusätzlichen Schritt: das Kompilieren Ihrer App mit dem Compiler,. TypeScript `tsc` Bei typischen AWS CDK-Apps dauert die Kompilierung höchstens einige Sekunden.

Der einfachste Weg, eine bestehende JavaScript AWS CDK-App zu migrieren, TypeScript besteht darin`cdk init app --language typescript`, ein neues TypeScript Projekt mit Ihren Quelldateien (und allen anderen erforderlichen Dateien, wie Assets wie dem Quellcode der AWS Lambda-Funktion) zu erstellen und dann in das neue Projekt zu kopieren. Benennen Sie Ihre JavaScript Dateien so um, dass sie enden `.ts` und mit der Entwicklung beginnen. TypeScript