var a = 10;
var a: number = 10;
a = "abc";
console.log(a);
function sum(a: number, b: number) {
return a + b
}
console.log(sum("2", 2))
let a: number = 100;
let b: number = NaN;
let c: number = Infinity;
let str: string = "abc";
let arr: Array < number > = [1, 2, 3, 4];
let name: any = 123;
name = "123"
let arr1: Array < any > = [1, 'a', {},
[]
];
function test(a: ? number) {
a = a || 0;
console.log(a);
}
test(10);
test();
let a: number | string = 10;
a = "abc";
a = {};
function test(a: number, b: number) {
return a + b;
}
let c: string = test(1, 2);
function test(a: number, b: number): number {
return a + b;
}
var a: string = test(1, 2);
let func: (a: number, b: number) => string = test;
function ajax(callback: (data: Object) => void) {
}
ajax(function(obj: Object) {})
function greet(obj: { sayHello: () => void, name: string }) {
obj.sayHello();
}
var o = {
name: "张学友",
sayHello() {
console.log("Hello")
}
}
greet(o);
function ajax(option: { url: string, type: string, success: (data: Object) => void }) {}
ajax({});
Flow的基本使用步骤
# FLOW是 JAVASCRIPT的静态类型检查器
地址: https:
安装
npm init - y
npm i flow - bin - D
书写代码, 为代码添加类型
var 变量: 数据类型 = 数据;
1. 通过注释的方式添加(不会改写js代码, 代码在添加完类型之后仍然可以正常运行)
2. 通过直接给数据添加类型, 改写js代码, 如果要正常运行, 需要使用babel进行转码
## 使用flow进行类型检查
0, 在pacakge.json文件中, scripts属性中添加flow命令
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"flow": "flow",
"build": "babel ./src -d ./dist"
},
1. 需要为flow创建一个配置文件.flowconfig
npm run flow init
2, .flowconfig文件中意思
[ignore]
[include]
[libs]
[lints]
[options]
[strict]
3. 执行类型检查
npm run flow
使用babel对flow代码进行转码
如果给数据添加类型声明是通过第二种方式, 直接修改的js代码, 那么代码是不能正常运行的
我们需要通过babel对代码进行转码之后才能正常运行
1. 安装babel以及presets
npm i babel - cli babel - preset - flow - D
{
"presets": [
"flow"
]
}
2. 配置package.json添加build命令调用babel··· json {
"scripts": {
"build": "babel ./src -d ./dist"
}
}
3. 执行build命令对文件进行转换
npm run build
function sum(arr: Array < number > ) {
let result = 0;
arr.forEach(v => {
result += v;
})
return result;
}
sum(['a', 1, 2]);
#
JavaScript语言特征介绍( 类型)
JavaScript是一种弱类型的, 动态类型检查的语言。
## 弱类型和强类型
### 弱类型?
在定义变量的时候, 我们可以为变量赋值任何数据, 变量的数据类型不是固定死的, 这样的类型叫做弱类型
``
`js
var a = 10;
a = "abc";
a = [];
a = function(){};
`
``###
强类型?
在声明变量的时候, 一旦给变量赋值, 那么变量的数据类型就已经确定, 之后如果要给该变量赋值其他类型的数据, 需要进行强制数据类型转换。
``
`java
int a = 10;
a = "10";
`
``##
动态类型和静态类型
动态类型和静态类型的核心区别: 动态类型的类型检查会在代码运行的时候进行, 而静态类型的类型检查则是在编译时进行。
运行时类型检查
``
`js
var obj = {};
obj.forEach(function(v, i){})
`
``
编译时类型检查
``
`java
int num = 100;
num = "abc";
`
``
问题:
function greet(obj) {
obj.sayHello();
}
var o = {
name: "张学友"
};
greet(o);
好处: #静态类型的优势
## 提早发现代码中的Bug
##
提高代码的可读性
function sum(a, b) {
return a + b;
}
##
减少了复杂的错误处理逻辑
这个函数接收一个数字数组作为参数
返回这个数组中所有数字的和
function sum(arr) {
if (!arr) {
throw new Error("函数需要传参");
}
if (!Array.isArray(arr)) {
throw new Error("函数需要一个数组作为参数");
}
if (!arr.every(v => typof v == 'number')) {
throw new Error("函数需要的数组为数字数组!")
}
let result = 0;
arr.forEach(v => {
result += v;
})
return result;
}
sum([1, 2, 3]);
sum(['a', 'b'])
sum()
##
便于代码重构
function test(num) {
console.log(num)
}
test({ name: "郭富城" })
##
增强IDE的功能
IDE: 集成开发环境
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· 语音处理 开源项目 EchoSharp
· 《HelloGitHub》第 106 期
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 使用 Dify + LLM 构建精确任务处理应用