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 (歴史的な仕様)