最后
今天的文章可谓是积蓄了我这几年来的应聘和面试经历总结出来的经验,干货满满呀!如果你能够一直坚持看到这儿,那么首先我还是十分佩服你的毅力的。不过光是看完而不去付出行动,或者直接进入你的收藏夹里吃灰,那么我写这篇文章就没多大意义了。所以看完之后,还是多多行动起来吧!
可以非常负责地说,如果你能够坚持把我上面列举的内容都一个不拉地看完并且全部消化为自己的知识的话,那么你就至少已经达到了中级开发工程师以上的水平,进入大厂技术这块是基本没有什么问题的了。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
undefined也有自己单独的类型
let u: undefined = undefined;
同理,null也有
let n: null = null;
函数的话大致有以下几种情况:
有返回值
// 限定函数的返回值必须是string类型
function func():string{
return ‘22’
}
// 限定函数的返回值必须是数组类型,并且数组的值必须是数字
function func():number[]{ // 如果是任意值类型的数组,可以使用any[]
return [22]
}
无返回值
function func():void{
…
}
另外就是有参数的
// 限定了参数a必须是数字,b必须是数字,并且返回值必须是数字类型
function func(a:number,b:number):number{
return a-b;
}
函数表达式
// 声明了一个变量,有两个参数,a和b,限定了参数a必须是数字,参数b必须是数字,通过箭头函数的方式规定返回值必须是数字
let func:(a:number,b:number) => number
在ts文件中,在对象在声明的时候会固定属性类型,比如
let obj = {
name:‘oliver’,
age:18
}
如果在ts文件中这么写的话,那么就相当于固定了键值,key必须是对应的,在这里的示例中,其实完整的写法应该是如下,另外,对象中的位置顺序没有关系,也就是name和age的位置没有关系,可以先写name,也可以先写age
// 完整的写法
let obj:{name:string,age:number}={
name:‘oliver’,
age:18
}
复杂示例
let obj:{name:number[],age:(a:number,c:number)=>number[]}={
name:[1,2,3],
age(a,b){
return this.name
}
}
声明了一个对象obj,对象有两个key,第一个是name,第二个是age,name的值必须是一个有数字组成的数组,age的值的类型必须是函数,并且第一个参数必须是数字,第二个参数必须是数字,返回值必须是一个由数字组成的数组
写到这里就会发现类的类型定义的好麻烦,能最好能单独写,这样类型就可以复用,不然每一次都要写一长串,其实是有的,关键字type
type myType = {name:number[],age:(a:number,c:number)=>number[]};
let obj:myType = {
name:[1,2,3],
age(a,b){
return this.name
}
}
type Name = string;
// 要求函数返回值必须是字符串
type NameResolver = () => string
// 要求类型要么直接是字符串,要么返回值是字符串
type NameOrResolver = Name | NameResolver;
function getName(n:NameOrResolver):name{
if(typeof n === ‘string’){
return n
}
else {
return n()
}
}
对于类型是可以复合的,因为有时候可能是数字,也有可能是null
let message:number | undefined
再举一个例子
let message:number | string | boolean;
message = 12;
message = ‘12’;
message = [1,2] // 报错,因为没有定义数组类型
message可以是数字,可以是字符串,也可以是true或者false,但是不能是数组,是数组就会报错;
============================================================
题目:给下方两个对象添加类型。
let sumValue: myType = {
money:200,
count(value){
this.money += value;
}
}
let handleCount = {
name:‘Oliver’,
sumValue:sumValue,
friends:[‘aaa’,‘bbb’]
}
handleCount.sumValue.count(500)
console.log(handleCount)
解答
type myType = {money:number,count:(value:number) => void}
let sumValue: myType = {
money:200,
count(value:number):void{
this.money += value;
}
}
let handleCount:{name:string,sumValue:myType,friends:string[]} = {
name:‘Oliver’,
sumValue:sumValue,
friends:[‘aaa’,‘bbb’]
}
最后
前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
+= value;
}
}
let handleCount:{name:string,sumValue:myType,friends:string[]} = {
name:‘Oliver’,
sumValue:sumValue,
friends:[‘aaa’,‘bbb’]
}
最后
前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
[外链图片转存中…(img-issGgGG1-1715664813654)]
[外链图片转存中…(img-IksAyYwT-1715664813656)]