mcpField
A
arkts-static-spec

arkts-static-spec

github.com/openharmonyinsight開発3546 回インストール11 週間前に更新
リポジトリ

arkts-static-spec について

ArkTS 開発者向けの言語仕様および TypeScript 移行リファレンススキルです。型や構文、並行処理の仕様、移行レシピ、互換性情報を整理し、文書に基づく回答を求めます。

主な機能

  1. 01テーマ別の ArkTS 仕様
  2. 02型・クラス・構文・並行処理
  3. 03TypeScript 移行レシピ
  4. 04ArkTS と TypeScript の差異
  5. 05文書に基づく回答

活用シーン

  1. 01ArkTS の型や構文規則を調べる
  2. 02TypeScript コードを ArkTS に移行
  3. 03言語機能の互換性を確認
  4. 04非同期処理と並行処理の仕様を参照

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/openharmonyinsight/openharmony-skills --skill arkts-static-spec

インストール後、Claude Code で/arkts-static-specを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
cookbook/
cookbook-compatibility.md
cookbook-recipes.md
index.md
spec/
ambients.md
annotations.md
authors.md
binary_compatibility.md
build_system.md
classes.md
concurrency.md
conversions.md
enums.md
errors.md
experimental.md
expressions.md
generics.md
grammar.md
implementation.md
interfaces.md
intro.md
lexical.md
modules.md
names.md
runtime.md
semantics.md
statements.md
stdlib.md
types.md

詳細

ArkTS Static Language Specification

ArkTS プログラミング言語の完全なリファレンスです。公式仕様と TypeScript 移行ガイドを含みます。

⚠️ 使用上の原則(重要)

この skill を使用して質問に回答する際は、以下の原則を必ず厳守してください。

  1. skill のドキュメント内容に厳密に従って回答する

    • すべての回答は、spec/ および cookbook/ ディレクトリ内のドキュメントに基づく必要があります
    • ドキュメントにない仮定や推論を追加しないでください
  2. ドキュメントに記載されていない内容を明確に示す

    • skill のドキュメントに特定の機能について明確な説明がない場合、回答に次のように記載する必要があります:
      • 「⚠️ skill のドキュメントには明確な説明がありません。使用者自身で確認してください」
    • TypeScript や他の言語の機能をもとに推測しないでください
  3. ArkTS を独立した静的言語として扱う

    • ArkTS は独立した静的言語であり、TypeScript のスーパーセットではありません
    • TypeScript の機能がすべて ArkTS でサポートされていると仮定しないでください
    • TypeScript の構文ではなく、ArkTS の公式仕様に従ってください

ディレクトリ構成

このスキルは、主に次の 2 つの部分で構成されています:

arkts-static-spec/
├── spec/              # ArkTS 语言规范
│   ├── types.md       # 类型系统
│   ├── classes.md     # 类声明
│   ├── expressions.md # 表达式和运算符
│   ├── statements.md  # 语句和控制流
│   ├── generics.md    # 泛型
│   ├── annotations.md # 注解和装饰器
│   ├── modules.md     # 模块系统
│   ├── lexical.md     # 词法结构
│   ├── names.md       # 声明和作用域
│   ├── conversions.md # 类型转换
│   ├── interfaces.md  # 接口
│   ├── enums.md       # 枚举
│   ├── errors.md      # 错误处理
│   ├── concurrency.md # 并发和异步
│   ├── stdlib.md      # 标准库
│   └── experimental.md# 实验性特性
│
└── cookbook/          # TypeScript 迁移指南
    ├── index.md       # 迁移指南总览
    ├── recipes.md     # 详细迁移食谱(144+ 项)
    └── compatibility.md # TypeScript vs ArkTS 兼容性详情

第 1 部:ArkTS 言語仕様(spec/)

テーマ別に構成された、ArkTS 言語の公式仕様リファレンスです。

主要な仕様ファイル
ファイル内容用途
types.md型システム、事前定義型型、型推論、デフォルト値の確認
classes.mdクラス宣言、アクセス修飾子、継承クラスの定義、インターフェイスの実装、継承
expressions.md演算子、優先順位式の評価、演算子の使用
statements.md制御フロー、ループ、try-catchif/else、for、while、例外処理
generics.mdジェネリック型と関数ジェネリックコードの作成、型制約
annotations.mdデコレーターとメタデータ@Decorator の使用
modules.mdImport/export、名前空間モジュール構成、インポートとエクスポート
lexical.md識別子、キーワード、リテラル字句解析、構文規則
names.md宣言、スコープ、可視性変数のスコープ、名前の衝突
conversions.md型変換とコンテキスト型変換規則
interfaces.mdインターフェイスの宣言と実装インターフェイスの定義、契約の実装
enums.md列挙型列挙型の使用
errors.mdエラー処理と try 文例外処理、throw 文
concurrency.mdAsync/await、TaskPool非同期プログラミング、並行処理
stdlib.md標準ライブラリ API組み込みオブジェクトと関数
experimental.md実験的機能FixedArray、char、関数のオーバーロードなど

第 2 部:TypeScript 移行ガイド(cookbook/)

TypeScript から ArkTS への完全な移行ガイドです。144 件以上の詳細な移行レシピと互換性に関する説明が含まれています。

移行ガイドのファイル
ファイル内容用途
index.md移行ガイドの概要移行の理由、設計原則、クイックスタートの確認
recipes.md144 件以上の詳細な移行レシピ具体的な構文の変換方法や、よくある問題の解決方法の確認
compatibility.mdTypeScript と ArkTS の互換性に関する詳細動作の違い、数値の意味、配列の代入などの確認

クイックスタート

ArkTS の型注釈
let num: number = 42
const str: string = "hello"
let arr: number[] = [1, 2, 3]
ArkTS のクラス宣言
class Person {
  private name: string
  public age: number

  constructor(name: string, age: number) {
    this.name = name
    this.age = age
  }

  public introduce(): string {
    return `I'm ${this.name}, ${this.age} years old`
  }
}
ジェネリック関数
function identity<T>(value: T): T {
  return value
}

let num = identity<number>(42)
let str = identity<string>("hello")
非同期関数
async function fetchData(): Promise<string> {
  const response = await fetch("https://example.com")
  return await response.text()
}

型システム早見表

事前定義型
分類型説明
数値byte, short, int, long, float, double, number, bigint整数と浮動小数点数
ブール値booleantrue/false
文字char実験的機能です。c'A' 構文を使用します
文字列stringテキストデータ
特殊void, null, undefined, never特殊な用途
オブジェクトObject, objectオブジェクト型

注意:ArkTS では any と unknown はサポートされていないため、明示的な型を使用する必要があります。

型演算子
  • 共用体型:T | U
  • 交差型:T & U
  • 配列型:T[] または Array<T>
  • 読み取り専用配列:readonly T[]

TypeScript 移行早見表

よくある変換
TypeScriptArkTS説明
var x = 10let x: number = 10let を使用し、型を明示する必要があります
let x: anylet x: SpecificTypeany は禁止です。具体的な型を使用します
let {a, b} = objlet a = obj.a; let b = obj.bオブジェクトの分割代入はサポートされていません
"prop" in objobj instanceof Classin 演算子はサポートされていません
import m = require("mod")import * as m from "mod"ES6 の import を使用します
コードの維持率
  • 完全サポート(変更不要):90% - 97%
  • 部分サポート(小規模なリファクタリング):約 2% - 8%
  • 非サポート(リファクタリングが必要):約 1%

検索ガイド

ArkTS 言語仕様を調べる

テーマに応じて、該当する仕様ファイルを選択してください:

查询 TypeScript 迁移问题

ArkTS vs TypeScript 关键差异

1. 静态类型强制执行
特性TypeScriptArkTS
静态类型可选强制
any 类型允许禁止
unknown 类型允许禁止
类型推断可选必须
2. 对象布局固定
特性TypeScriptArkTS
运行时添加属性允许(用 as any 绕过)禁止
删除属性允许(用 as any 绕过)禁止
对象布局可变固定
3. Null 安全
特性TypeScriptArkTS
null 赋值给非空类型可选模式下禁止强制禁止
undefined 作为值允许严格限制
4. 数值语义
let n = 1
console.log(n / 2)

// TypeScript: 0.5(浮点除法)
// ArkTS: 0(整数除法)

访问修饰符

修饰符可访问性
public任何地方(默认)
private仅类内部
protected类和子类
readonly初始化后不可变
static类级别,非实例级别

常见设计模式

单例模式
class Singleton {
  private static instance: Singleton
  private constructor() {}

  public static getInstance(): Singleton {
    if (!Singleton.instance) {
      Singleton.instance = new Singleton()
    }
    return Singleton.instance
  }
}
工厂模式
interface Product {
  operation(): string
}

class ConcreteProductA implements Product {
  operation(): string {
    return "Product A"
  }
}

class Factory {
  static create(type: string): Product {
    if (type === "A") {
      return new ConcreteProductA()
    }
    throw new Error("Unknown product type")
  }
}

为什么选择 ArkTS?

优势
  1. 程序稳定性

    • 严格类型检查,减少运行时错误
    • 编译时类型验证
    • 字段必须初始化
  2. 程序性能

    • 编译为字节码,执行更快
    • 消除运行时类型检查开销
    • 针对移动设备优化
  3. 代码可读性

    • 静态类型让代码意图清晰
    • 对象布局固定,行为可预测
迁移成本
  • 代码保持率:90% - 97%(遵循最佳实践)
  • 主要调整:移除 any、使用 let 代替 var
  • 学习曲线:TypeScript 开发者易于上手

控制流速查

if-else
if (condition) {
  // ...
} else {
  // ...
}
循环
// while 循环
while (condition) {
  // ...
}

// for 循环
for (let i: int = 0; i < 10; i++) {
  // ...
}

// for-of 循环
for (const item of array) {
  // ...
}
错误处理
try {
  // 可能抛出错误的代码
} catch (e: Error) {
  // 处理错误
} finally {
  // 清理(总是执行)
}

迁移检查清单

优先级 1:必须修复(ERROR 级别)
  • 替换所有 var 为 let
  • 移除所有 any / unknown 类型
  • 移除 Symbol() API 使用
  • 移除私有 # 标识符
  • 确保类型和命名空间名称唯一
  • 移除非标识符属性名
  • 移除调用签名和构造签名类型
  • 移除 in 运算符
  • 移除对象解构
  • 替换 require 为标准 import
  • 移除 export = 语法
优先级 2:代码改进建议(WARNING 级别)
  • 检查字段初始化
  • 审查对象属性访问模式
  • 确保类型安全

完整参考

  • ArkTS 语言规范:spec/
  • TypeScript 迁移指南:cookbook/
  • 原始规范文档:D:\arkcompiler\runtime_core\static_core\plugins\ets\doc\spec\
  • 原始 Cookbook:D:\arkcompiler\runtime_core\static_core\plugins\ets\doc\cookbook\

コメント