【实习日记】第五天 剖析源码+学习Node.js & Typescript基本语法

本文记录了一位实习生学习Node.js & TypeScript的基础语法过程,包括原始数据类型、任意值、类型推论、联合类型和接口。通过实例展示了如何定义变量、接口,并强调了类型系统的严谨性。目前,作者已完成语法基础学习,下一步将深入理解语言逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

国庆假期结束了,其实在这里实习对我而言还算是比较愉快的,虽然完成任务过程中出现的问题层出不穷,但也被克服问题的成就感包裹着,感觉每天在办公室就像在上自习一样。加油啦小荷!

自从把example运行成功后接下来的任务就明晰一点了,首先要完成的是学会Node.js & Typescript这个语言,我决定从头学起,这个语言是一门类C语言,所以语法方面会有很多的相似点。所以给自己打打气!肯定行哒!加油加油!~

首先我看了Typescript的声明文件,学习了一些基础语句的表示方法(但暂时没有学到逻辑)链接如下:

一、认识Typescript
二、Typescript基础知识
三、Typescript高级的类型与技术
四、TypeScript 工程化的最佳实践
(真的非常牛逼!一定要去看!!!)

主要学到的语法有:
一,原始数据类型

  • 布尔值
    是最基础的数据类型,在 TypeScript 中,使用 boolean 定义布尔值类型:
let isDone: boolean = false;

// 编译通过
// 后面约定,未强调编译错误的代码片段,默认为编译通过
  • 数值
    使用 number 定义数值类型:
let decLiteral: number = 6;
let hexLiteral: number = 0xf00d;
// ES6 中的二进制表示法
let binaryLiteral: number = 0b1010;
// ES6 中的八进制表示法
let octalLiteral: number = 0o744;
let notANumber: number = NaN;
let infinityNumber: number = Infinity;
  • 字符串
    使用 string 定义字符串类型:
let myName: string = 'Tom';
let myAge: number = 25;

// 模板字符串
let sentence: string = `Hello, my name is ${myName}.
I'll be ${myAge + 1} years old next month.`;
  • 空值

JavaScript 没有空值(Void)的概念,在 TypeScript 中,可以用 void 表示没有任何返回值的函数:

function alertName(): void {
    alert('My name is Tom');
}

声明一个 void 类型的变量没有什么用,因为你只能将它赋值为 undefined 和 null。
在 TypeScript 中,可以使用 null 和 undefined 来定义这两个原始数据类型:

let u: undefined = undefined;
let n: null = null;

与 void 的区别是,undefined 和 null 是所有类型的子类型。也就是说 undefined 类型的变量,可以赋值给 number 类型的变量:

// 这样不会报错
let num: number = undefined;
// 这样也不会报错
let u: undefined;
let num: number = u;

而 void 类型的变量不能赋值给 number 类型的变量:

let u: void;
let num: number = u;

// Type 'void' is not assignable to type 'number'.

二、任意值
任意值(Any)用来表示允许赋值为任意类型。
如果是一个普通类型,在赋值过程中改变类型是不被允许的,但如果是 any 类型,则允许被赋值为任意类型。

let myFavoriteNumber: any = 'seven';
myFavoriteNumber = 7;

如上代码就被反复赋值,第一次是字符串类型,第二次是数字类型。

三、类型推论
TypeScript 会在没有明确的指定类型的时候推测出一个类型,这就是类型推论。如果定义的时候没有赋值,不管之后有没有赋值,都会被推断成 any 类型而完全不被类型检查:

let myFavoriteNumber;
myFavoriteNumber = 'seven';
myFavoriteNumber = 7;

四、联合类型
联合类型(Union Types)表示取值可以为多种类型中的一种。

let myFavoriteNumber: string | number;
myFavoriteNumber = 'seven';
myFavoriteNumber = 7;

联合类型使用 | 分隔每个类型。

这里的 let myFavoriteNumber: string | number 的含义是,允许 myFavoriteNumber 的类型是 string 或者 number,但是不能是其他类型。

let myFavoriteNumber: string | number;
myFavoriteNumber = true;

// index.ts(2,1): error TS2322: Type 'boolean' is not assignable to type 'string | number'.
//   Type 'boolean' is not assignable to type 'number'.

五、对象的类型——接口
在 TypeScript 中,我们使用接口(Interfaces)来定义对象的类型。
什么是接口?
在面向对象语言中,接口(Interfaces)是一个很重要的概念,它是对行为的抽象,而具体如何行动需要由类(classes)去实现(implement)。

TypeScript 中的接口是一个非常灵活的概念,除了可用于对类的一部分行为进行抽象以外,也常用于对「对象的形状(Shape)」进行描述。

interface Person {
    name: string;
    age: number;
}

let tom: Person = {
    name: 'Tom',
    age: 25
};

上面的例子中,我们定义了一个接口 Person,接着定义了一个变量 tom,它的类型是 Person。这样,我们就约束了 tom 的形状必须和接口 Person 一致。

接口一般首字母大写。有的编程语言中会建议接口的名称加上 I 前缀。

定义的变量比接口多一些和少一些属性都是不允许的:

interface Person {
    name: string;
    age: number;
}

let tom: Person = {
    name: 'Tom'
};

// index.ts(6,5): error TS2322: Type '{ name: string; }' is not assignable to type 'Person'.
//   Property 'age' is missing in type '{ name: string; }'.

接口详解(这章真的超级牛逼!!一定要认真看!)

完蛋,越看越看不懂了:
带大家共同鉴赏一下计算机绕口令,我念了好几遍才懂:

  1. 一旦定义了任意属性,那么确定属性和可选属性的类型都必须是它的类型的子集:
  2. 只读的约束存在于第一次给对象赋值的时候,而不是第一次给只读属性赋值的时候:
  3. 采用函数表达式|接口定义函数的方式时,对等号左侧进行类型限制,可以保证以后对函数名赋值时保证参数个数、参数类型、返回值类型不变。

今晚吧所有基础的Node.js & Typescript基本语法看完了,但是主要就是了解一些基本的词汇以及词汇的用法与限制,但是还没有看到Node.js & Typescript的逻辑,所以明天的安排就是看Node.js & Typescript语法逻辑。

现在归类整理一下博客案例中一些有用的语句:

  1. let (变量) :(类型) = (所赋的值);
let decLiteral: number = 6;

定义一个名叫decLiteral,number类型,值为6的变量.

let myName: string = 'Tom';

定义一个名叫myName,string类型,值为Tom的变量.

let myFavoriteNumber: any = 'seven';

定义一个名叫myFavoriteNumber,any(任意)类型,值为seven的变量.

  1. var 定义全局变量

  2. let (变量): (类型一) | (类型二);

let myFavoriteNumber: string | number;

定义一个名叫myFavoriteNumber,类型为string或者number的变量

  1. interface 接口名称 { 名字一: 类型一; 名字二: 类型二; }
interface Person {
    name: string;
    age: number;
}

定义一个名叫Person的接口,接口中有名叫name类型为string的变量以及名叫age类型为number的变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值