typescript嵌套类型声明-从 JavaScript 到 TypeScript – 声明类型

从Java语法重写为Type语法有两个关键点。 一是需要声明类成员变量(Field),二是必须为各种事物(变量、参数、函数/方法等)声明类型。 而这两点直接引出了两个关键问题,什么类型? 如何申报?

类型

在讲Type类型之前,我们先来准备一下Java的七种类型:

这七种类型都可以通过 typeof 运算符来计算,但是其中没有 Array、null、Date 等常见类型——因为它们看起来都是对象。

Type 的重要特征之一是类型,因此 Type 中的类型更加具体。 除了Java中的类型之外,还定义了一些其他类型(不完全列表)

具体类型这里不再解释。 官方手册的基本类型、接口、类、枚举和高级类型部分都非常清楚。

不过,还有一个与类型相关的特性不得不提——泛型。 如果只讲数据类型,纯JSers还是能理解的,毕竟类型并不新鲜,只是对类型进行了扩展。 但纯 JSers 可能没有子类的概念。

泛型主要使用符号来表示某些类型。 只要是满足约束的类型(默认是无约束的),这个类型符号就可以被替换使用,比如

功能测试(v:T){

控制台.log(v);

test(true);//显式指定T替换为boolean

test("hello");// 推断(隐式)T 被字符串替换

test(123);//推断(隐式)T被数字替换

泛型与强类型有关,即需要严格的类型检测,而我想少写类似的代码,所以我干脆用某种符号来代替类型。 泛型这个名字本身可能不太好理解,但是如果借用C++中“模板”的概念,那就很容易理解了。 比如前面的类库函数,根据前面的调用,可以解释为三个函数typescript嵌套类型声明,相当于应用了一个模板typescript嵌套类型声明,将T替换为实际类型:

必须声明元素类型_typescript嵌套类型声明_typedef声明类型

函数测试(v:布尔值){...}

函数测试(v:字符串){...}

函数测试(v:数字){...}

关于类库,更详细的内容可以参考Handbook的Generic部分。

这就是类型的全部内容。 简单的类型一看就明白。 后面我们会开专题来讲解更高级的类型。 但是,既然选择使用Type,就必然会用到它的静态类型特性,所以一定要加强识别类型的意识,养成这样的习惯。 对于纯粹的 JSer 来说,这是一个巨大的挑战。

申报类型

声明类型主要是指声明变量/常量、函数/方法和类成员的类型。 JS 使用 var 声明变量,ES6 扩展了 let 和 const。 这些声明类型都是支持的。为变量或常量指定类型也很简单,只需在变量/常量名称前面加上引号,然后指定类型即可,例如

// # 类型

必须声明元素类型_typedef声明类型_typescript嵌套类型声明

// 声明函数pow是number类型,即返回值是number类型

// 声明参数 n 为 number 类型

函数pow(n:数字):数字 {

返回n*n;

// 声明测试没有返回值

函数测试():无效{

for(leti:数字=0;i