微信小程序 WXS スクリプトのデータ型システム完全ガイド

WXS データ型の概要

WeiXin Script(以下 WXS)は、WeChat 小程序内で直接スクリプト処理を行うための環境です。この言語は JavaScript のサブセットとして設計されており、以下の主要なデータ型をサポートしています。

  • 数値(number)
  • 文字列(string)
  • 論理値(boolean)
  • オブジェクト(object)
  • 関数(function)
  • 配列(array)
  • 日付(date)
  • 正規表現(regexp)

各型ごとに特有の構文規則、プロパティ、およびメソッドが存在します。以下に詳細を解説します。

数値型(number)

数値データには整数と小数が含まれます。以下の記述方法が可能です。

const integerVar = 42;
const decimalVar = 15.5;

利用可能な特性

  • constructor: 型情報を示す「Number」という文字列が返されます。

標準メソッド

ECMAScript 5 の仕様に準拠しており、主に以下のメソッドが使用可能です:

  • toString()
  • toLocaleString()
  • valueOf()
  • toFixed(digits)
  • toExponential()
  • toPrecision()

文字列型(string)

テキストデータを扱う場合、単一引用符または二重引用符で囲むことができます。

const singleQuoteStr = 'Example Text';
const doubleQuoteStr = "Another String";

関連プロパティ

  • constructor: 「String」を返却します。
  • length: 文字列内の文字数を表します。

主要メソッド一覧

ES5 互換機能を提供し、文字列処理に広く使われる以下の操作が可能ですが、詳細は ECMA 仕様を参照してください。

  • 変換系:toString, toLocaleLowerCase, toUpperCase
  • 検索・抽出系:charAt, indexOf, lastIndexOf, slice, substring
  • 編集系:concat, replace, split, trim
  • 比較系:localeCompare, match, search

論理型(boolean)

真偽値を表現するタイプで、定義できる値は厳密に 2 つのみです。

const isValid = true;
const isDisabled = false;

属性とメソッド

  • constructor: 戻り値は「Boolean」。
  • toString / valueOf: 変換用メソッドを使用可能。

オブジェクト型(object)

キーと値のペアで構成される非順序構造体です。リテラル表記や動的代入を通じて生成・操作できます。

// リテラルによる初期化
const settingsObj = {
  mode: 'dark',          // キー名は識別子でも良い
  count: 10,             // 値は任意のデータ型可
  label: 'Active'
};

// プロパティへのアクセス
if (settingsObj.count === 10) {
  console.log('Count matched');
}

// 値の変更
settingsObj.count = 15;
settingsObj['mode'] = 'light';

基本特性

  • constructor: オブジェクトの型を示す文字列を返します。
  • toString: 通常「[object Object]」という形式に変換されます。

関数型(function)

WXS では複数の関数定義パターンがサポートされています。

// 宣言形式
function calculate(x) {
  return x * 2;
}

// アロー風または式形式
var multiplier = function(x) {
  return x * 2;
};

クロージャと引数

ネストされた関数の実行も可能です。また、関数内部では arguments オブジェクトを利用でき、ただし以下の制限があります。

  • length: 渡された引数の総数。
  • [index]: インデックス指定で個別の引数値へアクセス。
var argsTest = function(a, b, c) {
  console.log(arguments.length);  // 3
  console.log(arguments[0]);      // a の値
};
argsTest(10, 20, 30);

関数の特性

  • constructor: 「Function」。
  • length: 定義時のパラメータ数。
  • toString(): コード内容の文字列表現を返します。

配列型(array)

多次元データの格納に使用する型です。初期化は次の通りです。

var items = [];                     // 空配列
var mixedList = [1, "A", {}, () => {}]; // 複合要素を含む配列

属性

  • constructor: 「Array」。
  • length: 現在の要素数。

利用可能な操作メソッド

ES5 に基づく配列操作関数が豊富に用意されています。追加・削除・変換・フィルタリングなどに対応します。

  • 変更系:pop, push, shift, unshift, reverse, splice
  • 結合・分割:concat, join
  • 検索・反復:indexOf, every, some, forEach, map, filter, reduce, reduceRight
  • スライス:slice, sort

日時型(date)

時刻の管理には特別なグローバル関数を用います。Dateコンストラクタではなく、getDate関数を使用してインスタンスを作成します。

// 現在時刻の取得
var now = getDate();

// ミリ秒からの指定
var past = getDate(1500000000000);

// 日付文字列の指定
var formatted = getDate('2023-1-14');

// 個々の成分の指定
var custom = getDate(2023, 0, 14, 10, 30, 0, 0);

主要メソッド群

  • Getter:getTime, getFullYear, getMonth, getDate, getDay, getHours など。
  • Setter:setTime, setFullYear, setDate, setHours など。
  • 文字列変換:toDateString, toTimeString, toLocaleString, toISOString など。

UTC 関連のメソッド (getUTCMonth 等) も利用可能です。

正規表現型(regexp)

文字列のパターンマッチングに使用され、作成には getRegExp を呼び出します。

var pattern = getRegExp("^[0-9]+$", "i");

設定可能なフラグ

  • g: グローバルマッチング
  • i: 大文字小文字を区別しない
  • m: マルチラインモード

プロパティ

  • source: 正規表現パターン本体。
  • global, ignoreCase, multiline: フラグの状態確認。
  • lastIndex: 次のマッチ開始位置(グローバル検索時)。

型判定とチェック

コンストラクタ属性の確認

データがどの型に属するか確認するには、constructor プロパティを使用するのが確実です。

console.log(newNumber.constructor === "Number");
console.log(newString.constructor === "String");
console.log(newBool.constructor === "Boolean");
console.log(newUserObject.constructor === "Object");
console.log(newFunc.constructor === "Function");
console.log(newArray.constructor === "Array");
console.log(newDateObj.constructor === "Date");
console.log(newRegexObj.constructor === "RegExp");

typeof 演算子の挙動

簡易的な型チェックには typeof を使用できます。ただし注意点として、配列や日付、オブジェクトはすべて 'object' と返却される点に留意が必要です。

console.log(typeof 123 === "number");      // true
console.log(typeof true === "boolean");    // true
console.log(typeof {} === "object");       // true
console.log(typeof [] === "object");       // true (注意)
console.log(typeof getDate() === "object"); // true (注意)
console.log(typeof null === "object");     // true (歴史的な仕様)

タグ: WXS 微信小程序,JavaScriptTypes フロントエンド技術

6月20日 22:32 投稿