Needle Engine
  • README
  • Code Of Conduct
  • HOW TO
  • documentation
    • SUMMARY
    • _backlog-mermaid
    • _backlog
    • _meta-test
    • Automatic Component Generation
    • Needle Core Components
    • How To Debug
    • Deployment and Optimization
    • embedding
    • Everywhere Actions
    • Example Projects ✨
    • Exporting Assets, Animations, Prefabs, Materials, Lightmaps...
    • Questions and Answers (FAQ) 💡
    • Feature Overview
    • This page has been moved: continue here
    • getting-started
    • Frameworks, Bundlers, HTML
    • index
    • Additional Modules
    • Networking
    • Needle Engine Project Structure
    • Samples Projects
    • Scripting Examples
    • Creating and using Components
    • Live
    • Live
    • About
    • Live
    • Live
    • Live
    • Live
    • Support, Community & AI
    • Technical Overview
    • Testimonials
    • Testing on local devices
    • Using Needle Engine directly from HTML
    • vision
    • VR & AR (WebXR)
    • blender
      • Needle Engine for Blender
    • cloud
      • Needle Cloud
    • custom-integrations
      • index
    • getting-started
      • Scripting Introduction for Unity Developers
      • Getting Started & Installation
      • Scripting in Needle Engine
    • reference
      • needle.config.json
      • <needle-engine> Configuration
      • @serializable and other decorators
    • three
      • index
    • unity
      • Editor Sync
      • Needle Engine for Unity
    • lang
      • de
        • 404
        • SUMMARY
        • Automatische Komponenten-Generierung
        • Needle-Kernkomponenten
        • Debugging
        • Bereitstellung und Optimierung
        • embedding
        • Everywhere Actions
        • Beispielprojekte ✨
        • Assets, Animationen, Prefabs, Materialien, Lightmaps exportieren...
        • Fragen und Antworten (FAQ) 💡
        • Funktionsübersicht
        • Diese Seite wurde verschoben: hier fortfahren
        • getting-started
        • Frameworks, Bundler, HTML
        • index
        • Zusätzliche Module
        • Netzwerkfunktionen
        • Needle Engine Projektstruktur
        • Beispielprojekte
        • Scripting Beispiele
        • Erstellen und Verwenden von Komponenten
        • Live
        • Live
        • Über
        • Live
        • Live
        • Live
        • Live
        • Support und Community
        • Technischer Überblick
        • Erfahrungsberichte
        • Testen auf lokalen Geräten
        • Needle Engine direkt aus HTML verwenden
        • vision
        • VR & AR (WebXR)
        • blender
          • Needle Engine für Blender
        • cloud
          • Needle Cloud
        • custom-integrations
          • index
        • getting-started
          • Einführung in das Scripting für Unity-Entwickler
          • Erste Schritte & Installation
          • Scripting in Needle Engine
        • reference
          • needle.config.json
          • <needle-engine> Konfiguration
          • @serializable und andere Decorators
        • three
          • index
        • unity
          • Editor Synchronisierung
          • Needle Engine für Unity
      • es
        • SUMMARY
        • Generación Automática de Componentes
        • Componentes principales de Needle
        • Cómo Depurar
        • Despliegue y optimización
        • embedding
        • Acciones Everywhere
        • Proyectos de Ejemplo ✨
        • Exportación de Assets, Animaciones, Prefabs, Materiales, Lightmaps...
        • Preguntas Frecuentes (FAQ) 💡
        • Resumen de Características
        • Esta página ha sido movida: continúe aquí
        • getting-started
        • Frameworks, Bundlers, HTML
        • index
        • Módulos Adicionales
        • Redes
        • Estructura de Proyecto de Needle Engine
        • Proyectos de ejemplo
        • Ejemplos de scripting
        • Crear y usar Components
        • En vivo
        • En Vivo
        • Acerca de
        • En vivo
        • En vivo
        • En vivo
        • En vivo
        • Soporte y Comunidad
        • Resumen técnico
        • Testimonios
        • Testing on local devices
        • Usando Needle Engine directamente desde HTML
        • vision
        • VR & AR (WebXR)
        • blender
          • Needle Engine para Blender
        • cloud
          • Needle Cloud
        • custom-integrations
          • index
        • getting-started
          • Introducción al Scripting para Desarrolladores de Unity
          • Primeros pasos e instalación
          • Scripting in Needle Engine
        • reference
          • needle.config.json
          • Configuración de <needle-engine>
          • @serializable y otros decoradores
        • three
          • index
        • unity
          • Editor Sync
          • Needle Engine para Unity
      • fr
        • SUMMARY
        • Génération automatique de composants
        • Composants principaux de Needle
        • Comment déboguer
        • Déploiement et Optimisation
        • embedding
        • Everywhere Actions
        • Exemples de Projets ✨
        • Exporter des Assets, des Animations, des Prefabs, des Matériaux, des Lightmaps...
        • Questions et Réponses (FAQ) 💡
        • Aperçu des fonctionnalités
        • Cette page a été déplacée : continuez ici
        • getting-started
        • Frameworks, Bundlers, HTML
        • index
        • Modules supplémentaires
        • Réseau
        • Structure du projet Needle Engine
        • Projets d'exemples
        • Exemples de Scripting
        • Créer et utiliser des Components
        • showcase-bike
        • En direct
        • À propos
        • En direct
        • Jouer
        • En direct
        • En direct
        • Support et Communauté
        • Vue d'ensemble technique
        • Témoignages
        • Tester sur les appareils locaux
        • Utiliser Needle Engine directement depuis HTML
        • vision
        • VR & AR (WebXR)
        • blender
          • Needle Engine pour Blender
        • cloud
          • Needle Cloud
        • custom-integrations
          • index
        • getting-started
          • Introduction au Scripting pour les Développeurs Unity
          • Premiers pas et installation
          • Scripting in Needle Engine
        • reference
          • needle.config.json
          • <needle-engine> Configuration
          • @serializable et autres décorateurs
        • three
          • index
        • unity
          • Synchronisation de l'Editor (Editor Sync)
          • Needle Engine pour Unity
      • hi
        • SUMMARY
        • कंपोनेंट का स्वतः जनरेशन
        • नीडल कोर कंपोनेंट्स
        • How To Debug
        • Deployment and Optimization
        • embedding
        • Everywhere Actions
        • उदाहरण प्रोजेक्ट ✨
        • एसेट, एनिमेशन, प्रीफैब, मटेरियल, लाइटमैप्स... को एक्सपोर्ट करना
        • प्रश्न और उत्तर (FAQ) 💡
        • सुविधा अवलोकन
        • यह पृष्ठ स्थानांतरित कर दिया गया है: यहां जारी रखें
        • getting-started
        • Frameworks, Bundlers, HTML
        • index
        • अतिरिक्त मॉड्यूल
        • नेटवर्किंग
        • Needle Engine प्रोजेक्ट स्ट्रक्चर
        • samples-and-modules
        • स्क्रिप्टिंग उदाहरण
        • कंपोनेंट बनाना और उपयोग करना
        • लाइव
        • लाइव
        • परिचय
        • लाइव
        • लाइव
        • लाइव
        • लाइव
        • समर्थन और समुदाय
        • तकनीकी अवलोकन
        • प्रशंसापत्र
        • Testing on local devices
        • HTML से सीधे Needle Engine का उपयोग करना
        • vision
        • VR & AR (WebXR)
        • blender
          • Needle Engine for Blender
        • cloud
          • Needle Cloud
        • custom-integrations
          • index
        • getting-started
          • Unity डेवलपर्स के लिए स्क्रिप्टिंग परिचय
          • आरंभ करना और इंस्टॉलेशन
          • Needle Engine में स्क्रिप्टिंग
        • reference
          • needle.config.json
          • <needle-engine> कॉन्फ़िगरेशन
          • @serializable and other decorators
        • three
          • index
        • unity
          • Editor Sync
          • Unity के लिए Needle Engine
      • ja
        • SUMMARY
        • 自動コンポーネント生成
        • Needleコアコンポーネント
        • デバッグの方法
        • デプロイと最適化
        • embedding
        • Everywhere Actions
        • サンプルプロジェクト ✨
        • アセット、アニメーション、Prefab、マテリアル、ライトマップなどのエクスポート
        • よくある質問(FAQ)💡
        • 機能概要
        • このページは移動しました: こちらからどうぞ
        • getting-started
        • フレームワーク、バンドラー、HTML
        • index
        • 追加モジュール
        • ネットワーキング
        • Needle Engineプロジェクトの構造
        • サンプルプロジェクト
        • スクリプティング例
        • Creating and using Components
        • ライブ
        • showcase-castle
        • 概要
        • ライブ
        • ライブ
        • ライブ
        • ライブ
        • サポートとコミュニティ
        • 技術概要
        • お客様の声
        • ローカルデバイスでのテスト
        • HTMLからNeedle Engineを直接使用する
        • vision
        • VR & AR (WebXR)
        • blender
          • Blender 用 Needle Engine
        • cloud
          • Needle Cloud
        • custom-integrations
          • index
        • getting-started
          • Scripting Introduction for Unity Developers
          • はじめに & インストール
          • Needle Engineでのスクリプティング
        • reference
          • needle.config.json
          • <needle-engine> 設定
          • @serializable およびその他のデコレーター
        • three
          • index
        • unity
          • Editor Sync
          • Unity用Needle Engine
      • pt
        • SUMMARY
        • Automatic Component Generation
        • Componentes Principais do Needle
        • Como Depurar
        • Implementação e Otimização
        • embedding
        • Everywhere Actions
        • Projetos de Exemplo ✨
        • Exportar Recursos, Animações, Prefabs, Materiais, Lightmaps...
        • Perguntas e Respostas (FAQ) 💡
        • Visão Geral dos Recursos
        • Esta página foi movida: continue aqui
        • getting-started
        • Frameworks, Bundlers, HTML
        • index
        • Módulos Adicionais
        • Redes
        • Estrutura do Projeto Needle Engine
        • Projetos de Exemplo
        • Exemplos de Scripting
        • Criar e usar Componentes
        • Ao Vivo
        • Ao Vivo
        • Sobre
        • Ao Vivo
        • Ao Vivo
        • Ao Vivo
        • Ao Vivo
        • Suporte e Comunidade
        • Visão Geral Técnica
        • Depoimentos
        • Testar em dispositivos locais
        • vanilla-js
        • vision
        • VR & AR (WebXR)
        • blender
          • Needle Engine para Blender
        • cloud
          • Needle Cloud
        • custom-integrations
          • index
        • getting-started
          • Introdução à Scripting para Developers Unity
          • Começar e Instalação
          • Scripting no Needle Engine
        • reference
          • needle.config.json
          • needle-engine-attributes
          • @serializable e outros decorators
        • three
          • index
        • unity
          • Sincronização do Editor
          • Needle Engine para Unity
      • vn
        • 404
        • SUMMARY
        • Automatic Component Generation
        • Các Component Cốt lõi của Needle
        • Cách gỡ lỗi
        • Triển khai và Tối ưu hóa
        • embedding
        • Hành động ở mọi nơi (Everywhere Actions)
        • Các Dự Án Ví Dụ ✨
        • Xuất Tài sản, Hoạt ảnh, Prefab, Vật liệu, Lightmap...
        • Câu hỏi thường gặp (FAQ) 💡
        • Tổng quan tính năng
        • Trang này đã được di chuyển: tiếp tục tại đây
        • getting-started
        • Frameworks, Bundlers, HTML
        • index
        • Các Module Bổ Sung
        • Kết nối mạng
        • Cấu trúc dự án Needle Engine
        • samples-and-modules
        • Ví dụ về Scripting
        • Tạo và sử dụng Component
        • Trực tiếp
        • Trực tiếp
        • Giới thiệu
        • Trực tiếp
        • Chơi thử
        • Trực tiếp
        • Demo trực tiếp
        • Hỗ trợ và Cộng đồng
        • Tổng quan kỹ thuật
        • Lời chứng thực
        • Testing on local devices
        • Sử dụng Needle Engine trực tiếp từ HTML
        • vision
        • VR & AR (WebXR)
        • blender
          • Needle Engine cho Blender
        • cloud
          • Needle Cloud
        • custom-integrations
          • index
        • getting-started
          • Giới thiệu về Scripting cho các nhà phát triển Unity
          • Getting Started & Installation
          • Scripting trong Needle Engine
        • reference
          • needle.config.json
          • Cấu hình <needle-engine>
          • @serializable và các decorator khác
        • three
          • index
        • unity
          • Editor Sync
          • Needle Engine cho Unity
      • zh
        • SUMMARY
        • 自动生成组件
        • Needle 核心组件
        • 如何调试
        • 部署与优化
        • embedding
        • Everywhere Actions
        • 示例项目 ✨
        • 导出资源、动画、预制体、材质、光照贴图...
        • 常见问题 (FAQ) 💡
        • 功能概览
        • 此页面已移动:请在此处继续
        • getting-started
        • 框架、打包器、HTML
        • index
        • 附加模块
        • 网络
        • Needle Engine 项目结构
        • 示例项目
        • Scripting Examples
        • Creating and using Components
        • 实时示例
        • 实时
        • 关于
        • 实时演示
        • 在线试玩
        • 实时演示
        • 现场演示
        • 支持与社区
        • 技术概述
        • 用户评价
        • Testing on local devices
        • 使用 Needle Engine 直接从 HTML
        • vision
        • VR & AR (WebXR)
        • blender
          • Needle Engine for Blender
        • cloud
          • Needle Cloud
        • custom-integrations
          • index
        • getting-started
          • Scripting Introduction for Unity Developers
          • 入门与安装
          • 在 Needle Engine 中编写脚本
        • reference
          • needle.config.json
          • <needle-engine> 配置
          • @serializable and other decorators
        • three
          • index
        • unity
          • 编辑器同步
          • Unity 版 Needle Engine
Powered by GitBook
On this page
Edit on GitHub
  1. documentation
  2. lang
  3. ja
  4. getting-started

Needle Engineでのスクリプティング

Typescript、Javascript、C#の違い、類似点、重要な概念。

Previousはじめに & インストールNextreference

Last updated 25 days ago

以下のガイドでは、C#、Javascript、Typescript間のいくつかの主な違いを強調しています。これは、Webエコシステムに慣れていない開発者にとって特に役立ちます。

Typescriptの書き方を学ぶための便利なリソースもいくつかあります。

C#、Javascript、またはTypescript間の主な違い

CSharpまたはC#は静的型付けされたコンパイル言語です。これは、コードが実行される前に、コンパイル(翻訳)されてILまたはCILという中間言語になる必要があることを意味します。この中間言語は、機械語に少し近いです。ここで理解すべき重要な点は、コードが分析され、コンパイラによって強制される特定のチェックとルールに合格しなければならないということです。C#言語のいずれかのルールに違反するコードを書いた場合、Unityでコンパイラエラーが発生し、アプリケーションは実行すら開始しません。コンパイラエラーがあると、Playモードに入ることはできません。

一方、Javascriptはランタイムで解釈されます。つまり、無効なコードを書いてエラーを引き起こす可能性がありますが、それらのエラーはプログラムが実行されるまで、またはエラーのある正確な行を実行しようとするまで表示されません。たとえば、var points = 100; points += "hello world";と書いても、ブラウザでコードを実行するまで誰も文句を言いません。

Typescriptは、Microsoftによって設計された言語で、javascriptにコンパイルされます。 これは、例えば型安全のような多くの機能を追加します。つまり、Typescriptでコードを書くとき、型を宣言することができ、その結果、例えば無効な代入を行ったり、予期しない型のメソッドを呼び出したりしようとしたときに、コンパイル時にエラーを得ることができます。以下でJavascriptとTypescriptにおける型について詳しく読んでください。

型 — あるいはその欠如

素のJavascriptには、(今日現在)型の概念がありません。let points = 100と宣言した変数が、アプリケーションの後半でまだ数値であるという保証はありません。つまり、Javascriptでは、後でコードでpoints = new Vector3(100, 0, 0);を代入することは完全に有効なコードです。あるいはpoints = nullやpoints = myRandomObjectでも構いません。これがどういうことかお分かりでしょう。コードを書いている間はこれで全く問題ありませんが、後でpoints -= 1と書いたときに、コードが実行されるとひどくクラッシュする可能性があります。その時、アプリケーションが既に実行されているブラウザでエラーが発生します。

上述のように、Typescriptは型を定義するための構文を追加することで、その問題を修正するために作成されました。

Typescriptを書くとき、基本的にまだJavascriptを書いていることを理解することが重要です。そして、例えばエラーのある行の上に//@ts-ignoreを追加したり、すべての型をanyとして定義したりすることで、すべての型チェックと安全チェックを回避することは可能ですが、これは絶対にお勧めできません。型は、実際にエラーが発生する前にエラーを見つけるのを助けるために存在します。サーバーにウェブサイトをデプロイしてから、後でユーザーや訪問者から、実行中にアプリがクラッシュしたという報告を受けることは、決して望ましくないでしょう。

素のJavascriptには型が提供されていませんが、****を使用することで、javascriptの変数、クラス、メソッドに型アノテーションを追加することはできます。

変数

C#では、型を使用するか、varキーワードを使用して変数を記述します。 例えば、int points = 100;と書くか、 あるいはvarを使用してコンパイラに正しい型を推論させることができます:var points = 100

JavascriptまたはTypescriptでは、変数を宣言するための現代的なオプションが2つあります。 再代入する予定の変数にはletを使用します。例えばlet points = 100; 再代入できないようにしたい変数にはconstを使用します。例えばconst points = 100;

ただし、constで宣言された変数でも、それが(例えば)カスタム型である場合は、値を代入することが可能であることに注意してください。以下の例を考えてみてください。

import { Vector3 } from "three";
// ---cut-before---
const myPosition : Vector3 = new Vector3(0, 0, 0);
myPosition.x = 100; // Assigning x is perfectly fine

上記は完全に問題のないTypescriptコードです。なぜなら、myPosition自体を再代入しているのではなく、myPositionのxメンバーだけを操作しているからです。一方、以下の例は許可されません。ランタイムエラーまたはtypescriptエラーが発生します。

// @errors: 2588
import { Vector3 } from "three";
// ---cut-before---
const myPosition : Vector3 = new Vector3(0, 0, 0);
myPosition = new Vector3(100, 0, 0); // ⚠ ASSIGNING TO CONST IS NOT ALLOWED

型の使用またはインポート

Unityでは、通常、コードの先頭にusingステートメントを追加して、プロジェクトで参照されているアセンブリから特定のネームスペースをインポートします。あるいは、特定のケースでは、ネームスペースから名前付きの特定の型をインポートすることもあります。 以下の例を見てください。

using UnityEngine;
// importing just a specific type and giving it a name
using MonoBehaviour = UnityEngine.MonoBehaviour;

これは、Typescriptでパッケージから特定の型をインポートする方法です。

import { Vector3 } from 'three';
import { Behaviour } from '@needle-tools/engine';

特定のパッケージからすべての型をインポートして名前を付けることもできます。これは時々見かけるかもしれません。

import * as THREE from 'three';
const myVector : THREE.Vector3 = new THREE.Vector3(1, 2, 3);

プリミティブ型

Vector2, Vector3, Vector4... C#の経験があるなら、クラスと構造体の違いについてご存知かもしれません。クラスが参照型であるのに対し、構造体はカスタムの値型です。つまり、文脈によってはスタックに割り当てられ、メソッドに渡される際にはデフォルトでコピーが作成されます。 C#の以下の例を考えてみてください。

void MyCallerMethod(){
    var position = new Vector3(0,0,0);
    MyExampleVectorMethod(position);
    UnityEngine.Debug.Log("Position.x is " + position.x); // Here x will be 0
}
void MyExampleVectorMethod(Vector3 position){
    position.x = 42;
}

positionという名前のVector3でメソッドが呼び出されます。メソッド内で、渡されたベクトルpositionが変更され、xが42に設定されます。しかし、C#では、このメソッドに渡されている元のベクトル(2行目を参照)は変更されていません。xは引き続き0になります(4行目)。

Javascript/Typescriptでは事情が異なります。こちらにはカスタムの値型はありません。つまり、Needle Engineやthree.jsでベクトルに出くわした場合、常に参照型となります。 typescriptの以下の例を考えてみてください。

import { Vector3 } from 'three'

function myCallerMethod() : void {
    const position = new Vector3(0,0,0);
    myExampleVectorMethod(position);
    console.log("Position.x is " + position.x); // Here x will be 42
}
function myExampleVectorMethod(position: Vector3) : void {
    position.x = 42;
}

違いがわかりますか?ベクトルやすべてのカスタムオブジェクトは実際には参照型であるため、元のposition変数(3行目)を変更したことになり、xは今や42です。

これはメソッドだけでなく、変数を使用する際にも理解しておくことが重要です。 C#では、以下のコードはVector3の2つのインスタンスを生成し、一方を変更してももう一方には影響しません。

var myVector = new Vector3(1,1,1);
var myOtherVector = myVector;
myOtherVector.x = 42;
// will log: 1, 42
UnityEngine.Debug.Log(myVector.x + ", " + myOtherVector.x);

Typescriptで同じことを行うと、コピーは作成されず、代わりに同じmyVectorインスタンスへの参照が得られます。

import { Vector3 } from 'three'

const myVector = new Vector3(1,1,1);
const myOtherVector = myVector;
myOtherVector.x = 42;
// will log: 42, 42
console.log(myVector.x, myOtherVector.x);

ベクトル演算と演算子

C#では演算子オーバーロードを使用できますが、残念ながらJavascriptでは利用できません。これは、C#でVector3をこのように乗算できる一方で:

var myFirstVector = new Vector3(1,1,1);
var myFactor = 100f;
myFirstVector *= myFactor;
// → myFirstVector is now 100, 100, 100

同じ結果を得るためには、Vector3型のメソッドを使用する必要があります(少しボイラープレートコードが増えます)。

import { Vector3 } from "three"

const myFirstVector : Vector3 = new Vector3(1, 1, 1)
const myFactor = 100;
myFirstVector.multiplyScalar(myFactor);
// → myFirstVector is now 100, 100, 100

等価性チェック

緩やかな比較と厳密な比較

C#では、2つの変数が同じかどうかをチェックしたい場合、次のように書くことができます。

var playerIsNull = myPlayer == null;

Javascript/Typescriptでは、==と===の間に違いがあります。===は型をより厳密にチェックします。

const myPlayer: any = null;
// ---cut-before---
const playerIsNull = myPlayer === null;
const playerIsNullOrUndefined = myPlayer == null;

イベント、バインディング、そしてthis

C#でイベントを購読(サブスクライブ)する場合、次のように行います。

// this is how an event is declared
event Action MyEvent;
// you subscribe by adding to (or removing from)
void OnEnable() {
    MyEvent += OnMyEvent;
}
void OnDisable() {
    MyEvent -= OnMyEvent;
}
void OnMyEvent() {}

TypescriptとJavascriptでは、メソッドをリストに追加する際、「thisをバインドする」必要があります。これは本質的に、thisを(通常は)現在のクラスインスタンスに明示的に設定するメソッドを作成することを意味します。これを実現する方法は2つあります。

ここではEventList型を使用していることに注意してください。これはNeedle Engineのイベントを宣言するための型です(EventListは、私たちのEditor統合と使用する際に、UnityEventまたはBlenderのイベントリストにも自動的に変換されます)。

import { EventList, Behaviour, serializable } from "@needle-tools/engine";

export class MyComponent extends Behaviour {

    @serializable(EventList)
    myEvent!: EventList;

    onEnable() {
        this.myEvent.addEventListener(this.onMyEvent);
    }

    onDisable() {
        this.myEvent.removeEventListener(this.onMyEvent);
    }

    // Declaring the function as an arrow function to automatically bind `this`
    private onMyEvent = () => {
        console.log(this !== undefined, this)
    }
}

同じことを実現するための、より冗長な「古典的な」方法もあります。これは手動でthisをバインドすることです(そして、後でイベントリストから再び削除するために、メソッドを変数に保存します)。

import { EventList, Behaviour, serializable } from "@needle-tools/engine";

export class MyComponent extends Behaviour {

    @serializable(EventList)
    myEvent?: EventList;

    private _onMyEventFn?: Function;

    onEnable() {
        // bind this
        this._onMyEventFn = this.onMyEvent.bind(this);
        // add the bound method to the event
        this.myEvent?.addEventListener(this._onMyEventFn);
    }

    onDisable() {
        this.myEvent?.removeEventListener(this._onMyEventFn);
    }

    // Declaring the function as an arrow function to automatically bind `this`
    private onMyEvent = () => { }
}

次は何ですか?

このページはAIによって自動的に翻訳されました

varに注意 Javascriptでもvarキーワードに出くわすかもしれませんが、その使用は推奨されておらず、現代的な代替手段はletです。について詳しく学んでください。

2番目の変数playerIsNullOrUndefinedが==を使用していることに気づくでしょう。これは緩やかな等価性チェックを行い、この場合、nullとundefinedの両方がtrueになります。詳細については、を参照してください。

これを行うための短く推奨される構文は、を使用することです。

Typescript Tutorial
Learn Typescript
Typescript Documentation
JSDoc
var vs let
こちら
アロー関数
Needle Engine Scripting