类型系统
本章汇总 Sii 提供的类型与相关能力,包含标量、容器、复合、检查与转换等。
标量类型(基础)
int:整型数值singlef:单精度浮点数multif:多精度浮点数bool:布尔类型(字面量:true、false)str:单字符(如'a'、' ')string:字符串unknown:未知类型(适用于输入等不确定类型场景)void:无返回值
字面量示例:
let a: int = 10;
let b: singlef = 3.14;
let c: multif = 2.718281828;
let d: bool = true;
let e: str = 'x';
let f: string = "hello";
let u: unknown = new ToGet(); // 输入得到的未知类型
容器与结构
arr:数组obj:对象
复合类型
联合类型:
// 这是用来定义获取用户输入的方法,详情见‘输入与输出’章节
let maybeText: unknown | string = new ToGet();
说明:A | B 表示值可以是 A 或 B。
类型检查
使用 typeins(标识符或表达式) 查看当前值的类型信息:
let age: int = 18;
// 输出类型提示,便于调试与自检
typeins(age);
// 输出结果:
// type: number
// value: 18
需要注意的是,当检测
int,singlef,multif类型时,typeins返回的type均为number,这其实是一种描述性类型名,便于开发者了解值类型,并非类型系统的标量类型
类型转换
提示
版本支持:该功能最低支持Sii 1.2.1版本,1.2.1以下版本具有目前已知的问题,推荐开发者将Sii CLI升级至1.2.1及以上版本,升级指南:系统更新
支持两类常用写法(示例为数值转字符串,其他方向类推):
let n: int = 10;
let s: string = n.toString(); // 方法式转换
// 其他常见:
let i2: int = s1.toInt();
let f1: singlef = n.toSimplef(); // 单精度
let f2: multif = n.toMultif(); // 多精度
注:初版不提供强制转换,优先采用安全可读的转换方式。
小结
- 标量覆盖数值、字符、布尔、字符串与空值语义
- 容器提供
arr与obj - 通过联合类型表达不确定性,配合
unknown与typeins - 转换提供函数式与方法式两种常见写法