首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

TypeScript学习笔记(二)—— TypeScript基础

注意,只读的约束存在于第一次对象赋值的时候,而不是第一次只读属性赋值的时候: interface Person { readonly id: number; name: string...上例中,报错信息有两处,第一处是在对 tom 进行赋值的时候,没有 id 赋值。 第二处是在给 tom.id 赋值的时候,由于它是只读属性,所以报错了。...; } 那么也不难理解为什么 Cat 类型的 tom 可以赋值 Animal 类型的 animal 了——就像面向对象编程中我们可以将子类的实例赋值类型为父类的变量。...('tom') 赋值 Cat 类型的 tom。...则会报错,不允许将 animal 赋值为 Cat 类型的 tom。 这很容易理解,Animal 可以看作是 Cat 的父类,当然不能将父类的实例赋值类型为子类的变量。

5K20

开心的档之TypeScript 变量声明

除了下划线 _ 和美元 $ 符号外,不能包含其他特殊字符,包括空格。变量名不能以数字开头。变量使用前必须先声明,我们可以使用 var 来声明变量。...,如果将不同的类型赋值变量会编译错误,如下实例:var num:number = "hello" // 这个代码会编译错误----类型断言(Type Assertion)类型断言可以用来手动指定一个值的类型...如果由于缺乏声明而不能推断出类型,那么它的类型被视作默认的动态 any 类型。...注意变量声明没有指定类型。因此,程序使用类型推断来确定变量的数据类型,第一次赋值为 2,num 设置为 number 类型。第三行代码,当我们再次为变量设置字符串类型的值时,这时编译会错误。...因为变量已经设置为了 number 类型。error TS2322: Type '"12"' is not assignable to type 'number'.

77330

开心档之TypeScript 变量声明

除了下划线 _ 和美元 $ 符号外,不能包含其他特殊字符,包括空格。 变量名不能以数字开头。 变量使用前必须先声明,我们可以使用 var 来声明变量。...,如果将不同的类型赋值变量会编译错误,如下实例: var num:number = "hello" // 这个代码会编译错误 ---- 类型断言(Type Assertion) 类型断言可以用来手动指定一个值的类型...如果由于缺乏声明而不能推断出类型,那么它的类型被视作默认的动态 any 类型。...注意变量声明没有指定类型。因此,程序使用类型推断来确定变量的数据类型,第一次赋值为 2,num 设置为 number 类型。 第三行代码,当我们再次为变量设置字符串类型的值时,这时编译会错误。...Numbers { num_val = 13; // 实例变量 static sval = 10; // 静态变量 storeNum():void

78320

开心档之TypeScript 变量声明

除了下划线 _ 和美元 $ 符号外,不能包含其他特殊字符,包括空格。 变量名不能以数字开头。 变量使用前必须先声明,我们可以使用 var 来声明变量。...,如果将不同的类型赋值变量会编译错误,如下实例: var num:number = "hello" // 这个代码会编译错误 ---- 类型断言(Type Assertion) 类型断言可以用来手动指定一个值的类型...如果由于缺乏声明而不能推断出类型,那么它的类型被视作默认的动态 any 类型。...注意变量声明没有指定类型。因此,程序使用类型推断来确定变量的数据类型,第一次赋值为 2,num 设置为 number 类型。 第三行代码,当我们再次为变量设置字符串类型的值时,这时编译会错误。...Numbers { num_val = 13; // 实例变量 static sval = 10; // 静态变量 storeNum():void

56210

【TypeScript】never 和 unknown 的优雅之道

,所以能够赋值任何类型: let err: never; let num: number = 4; num = err; // OK 我们可以使用集合来理解 never,unknown 是全集,never...declare const an: any; ne = an; // 错误,any 也不可以 declareconst nev: never; ne = nev; // 正确,只有 never 可以赋值...从上文我们知道,除了 never 自身,没有任何类型赋值 never。any 是否满足这个特性呢?...显然不能,举个很简单的例子: const a = 'anything'; const b: any = a; // 能够赋值 const c: never = a; // 报错,不能赋值 而我们为什么说...返回类型为底部类型的函数不能返回任何值,甚至不能返回零大小的单元类型。因此返回类型为底部类型的函数不能返回。

1.2K20

TypeScript进阶

例如:将一个联合类型的变量指定为一个更加具体的类型(但不能指定为联合类型中不存在的类型): // 使用联合类型时,必须使用这些类型共有的属性才行,但使用类型断言使其确定为某一种类型,就没有了此限制。...注意:与声明不赋值区分,声明不赋值会设为任意值类型:any 类型推论(Type Inference)是指编程语言在编译期中能够自动推导出值的数据类型的能力,它是一些强静态类型语言的特性。...联合类型使用 | 分隔每个类型,表示可以赋值为其中的一种。...定义只读属性(只读的约束存在于第一次对象赋值的时候,而不是第一次只读属性赋值的时候) interface Person { readonly id: number; name: string...list: any[] = ['Xcat Liu', 25]; //数组的值可以是任意类型 数组的项不允许出现其他类型,并且数组的一些方法的参数也不能出现其他类型,如:push()。

95820

typescript--基础数据类型

在此之前我一直认为Javascript是一门解释型语言,通过一些列学习,倒是有了不同的看法,也不能说前面的不对吧,但是其内部还是有编译的环节在的。我们可以亲切地称其为“JS三代”。...枚举类型默认是从0开始的, 然后你也可以自己给它赋值,如果想取名字的话,那就是对应的值的数组形式。...,想跳过编译期间的检查 空值:void function loginInfo(): void { console.log("A client logined!")...); console.log("param2: ", param2); 一般都是函数见到返回空值较多,声明一个void的变量的话,你只能给它赋值null或者undefined, 你这边放着不写,默认也是前面的情况...1.ts:7:1 - error TS2322: Type '(arr: number[], num: number) => number | undefined' is not assignable

52520
领券