zheng 3 giorni fa
parent
commit
2580cac267

+ 22 - 22
js高级/19.Symbol.html

@@ -14,28 +14,28 @@
         let s2 = Symbol('111');
         let s2 = Symbol('111');
         console.log(s1 == s2);
         console.log(s1 == s2);
         console.log(typeof s1)
         console.log(typeof s1)
-        const obj = {
-            name:"小红",
-            name:"小葛"
-        }
-        console.log(obj)
-        let name1 = Symbol("name");
-        let name2 = Symbol("name");
-        let obj1 = {
-            [name1]:"小红",
-            [name2]:"小葛"
-        }
-        console.log(obj1);
-        let s3 = Symbol(1);
-        // console.log(s3 + "1");
-        let s4 = Symbol("name");
-        let obj2 = {
-            [s4]:"图图",
-            age: 10
-        }
-        for(let i in obj2) {
-            console.log(i)
-        }
+        // const obj = {
+        //     name:"小红",
+        //     name:"小葛"
+        // }
+        // console.log(obj)
+        // let name1 = Symbol("name");
+        // let name2 = Symbol("name");
+        // let obj1 = {
+        //     [name1]:"小红",
+        //     [name2]:"小葛"
+        // }
+        // console.log(obj1);
+        // let s3 = Symbol(1);
+        // // console.log(s3 + "1");
+        // let s4 = Symbol("name");
+        // let obj2 = {
+        //     [s4]:"图图",
+        //     age: 10
+        // }
+        // for(let i in obj2) {
+        //     console.log(i)
+        // }
         let s5 = Symbol.for("你好");
         let s5 = Symbol.for("你好");
         let s6 = Symbol.for("你好");
         let s6 = Symbol.for("你好");
         console.log(s5 === s6)
         console.log(s5 === s6)

+ 12 - 6
js高级/20.BigInt.html

@@ -1,21 +1,27 @@
 <!DOCTYPE html>
 <!DOCTYPE html>
 <html lang="en">
 <html lang="en">
+
 <head>
 <head>
     <meta charset="UTF-8">
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
     <title>Document</title>
 </head>
 </head>
+
 <body>
 <body>
     <script>
     <script>
         // BigInt 处理超大整数 精度不丢失
         // BigInt 处理超大整数 精度不丢失
         // 9007199254740991 最大的安全整数
         // 9007199254740991 最大的安全整数
-        let a = 9007199254740991n+ 1n;
-        console.log(typeof a)
-        console.log(9007199254740991n +200n)
+        let a = 9007199254740991n + 1n;
+        console.log(9007199254740991n + 1n)
+        console.log(9007199254740991n + 2n)
+        console.log(9007199254740991n + 3n)
+        // console.log(typeof a)
+        // console.log(9007199254740991n +200n)
 
 
-        console.log(typeof BigInt(123))
-        console.log(typeof 123n)
-        console.log(9n > 55n)
+        // console.log(typeof BigInt(123))
+        // console.log(typeof 123n)
+        // console.log(9n > 55n)
     </script>
     </script>
 </body>
 </body>
+
 </html>
 </html>

+ 12 - 0
ts.ts/index.html

@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Document</title>
+</head>
+<body>
+    <!-- <script src="./1.ts" type="module"></script> -->
+     <script src="./类型/1.js"></script>
+</body>
+</html>

+ 21 - 0
ts.ts/初始/1.js

@@ -0,0 +1,21 @@
+"use strict";
+// js => javaScript 
+// let a = 20;
+// 数据 决定 类型
+// 弱语言
+Object.defineProperty(exports, "__esModule", { value: true });
+// ts => typeScript
+// var a:string;
+// a = 10;
+// 类型 决定 数据
+// 强语言
+// var a;
+// ts变量第一次赋值是什么类型 之后永远只能用这个类型 不能改!
+var a = 12;
+a = 44;
+// let xxx:类型 = 值
+var x;
+x = true;
+// 解决重复变量定义
+// 让ts作为独立的模块
+// 将编译后的js自动转成严格模式

+ 27 - 0
ts.ts/初始/1.ts

@@ -0,0 +1,27 @@
+// js => javaScript 
+// let a = 20;
+// 数据 决定 类型
+// 弱语言
+
+// ts => typeScript
+// var a:string;
+// a = 10;
+// 类型 决定 数据
+// 强语言
+// var a;
+// ts变量第一次赋值是什么类型 之后永远只能用这个类型 不能改!
+let a: number = 12;
+a = 44; 
+// let xxx:类型 = 值
+let x:boolean;
+x = true;
+// x = 12;
+// 全局安装:npm install -g typescript
+// 查看是否安装成功: tsc -v
+// 编译ts:tsc 名称
+export {}
+// 解决重复变量定义
+// 让ts作为独立的模块
+// 将编译后的js自动转成严格模式
+
+// Omit Pink区别

+ 64 - 0
ts.ts/类型/1.js

@@ -0,0 +1,64 @@
+// 字面量 = 变量只能是你写死的那个值 必须是一个精确地值
+var a;
+// a =20;
+// 逻辑运算符 | (联合类型)
+var b;
+b = 'man';
+b = 'woman';
+// let c1: number = 10;
+// let c2: string = '10';
+// let c3: null = null;
+// let c4: undefined = undefined;
+// let c5: boolean = true;
+// let c6: symbol = Symbol("xxx");
+// let c7: bigint = BigInt(5637742873827823784);
+// null undefined区别
+// b = 12;
+// 任意类型 隐性
+// let d: any;
+var d;
+// d = 1;
+d = '12';
+// d = Symbol(1);
+// d = null;
+// 未知类型 安全的any 显性
+var e;
+// let e;
+// e = 1;
+e = '12';
+// e = Symbol(1);
+// e = null;
+// any unknown 区别
+// any可以给任意变量赋值
+// unknown不能直接赋值
+var f;
+// f = d;
+// f = e;
+/**
+ * 类型断言
+ * 告知ts 开发者确定当前的值是什么目标类型 强制跳过了类型的判断
+ * 格式:
+ *
+ * f = d as string;
+ * f = <string>d;
+ * */
+f = d;
+f = d;
+var val = 'hello';
+var str = val;
+// 类型转换
+var x = '123';
+var y = Number(x);
+// void 用于表示空 函数没有返回值
+// function fn1():void {
+//     console.log("fn1");
+//     // return 12;
+// }
+// never 永远不会有结果
+function fn1() {
+    throw new Error("报错");
+    //  console.log("fn1");
+    //  return 12;
+}
+console.log(fn1());
+// export { }

+ 68 - 0
ts.ts/类型/1.ts

@@ -0,0 +1,68 @@
+// 字面量 = 变量只能是你写死的那个值 必须是一个精确地值
+let a: 10;
+// a =20;
+// 逻辑运算符 | (联合类型)
+let b: 'man' | 'woman';
+b = 'man';
+b = 'woman'
+// let c1: number = 10;
+// let c2: string = '10';
+// let c3: null = null;
+// let c4: undefined = undefined;
+// let c5: boolean = true;
+// let c6: symbol = Symbol("xxx");
+// let c7: bigint = BigInt(5637742873827823784);
+// null undefined区别
+// b = 12;
+// 任意类型 隐性
+// let d: any;
+let d;
+// d = 1;
+d = '12';
+// d = Symbol(1);
+// d = null;
+// 未知类型 安全的any 显性
+let e: unknown;
+// let e;
+// e = 1;
+e = '12';
+// e = Symbol(1);
+// e = null;
+// any unknown 区别
+// any可以给任意变量赋值
+// unknown不能直接赋值
+let f:string;
+// f = d;
+// f = e;
+
+/**
+ * 类型断言
+ * 告知ts 开发者确定当前的值是什么目标类型 强制跳过了类型的判断
+ * 格式:
+ *  
+ * f = d as string;
+ * f = <string>d;
+ * */
+f = d as string;
+f = <string>d;
+let val:any = 'hello';
+let str = val as string;
+// 类型转换
+let x = '123';
+let y = Number(x);
+
+// void 用于表示空 函数没有返回值
+// function fn1():void {
+//     console.log("fn1");
+//     // return 12;
+// }
+
+// never 永远不会有结果 函数永远执行不完
+function fn1():never {
+    throw new Error("报错")
+    //  console.log("fn1");
+    //  return 12;
+}
+console.log(fn1())
+// export { }
+

+ 83 - 0
ts.ts/类型/2.ts

@@ -0,0 +1,83 @@
+// let a = {}
+// 常规的对象类型
+// {属性名:类型,属性名:类型,....}
+// ? 当前属性 可以存在或者不存在
+// 扩展属性 允许额外定义任意属性 [propName:string]:any
+let a:{name:string,age?:number,[propName:string]:any};
+a = {
+    name:"图图",
+    age: 3
+}
+a = {name:"12",sex:'男',a:'1',b:2,c:3}
+
+// 函数
+// (形参:类型,形参:类型,...) => 类型;
+let b:(x:number,y:string) => string;
+b = function(a:number,b:string):string {
+    return a+b
+} 
+b(1,"1")
+
+// 数组
+// 定义格式:
+// 类型[] / Array<类型>
+// 元组 Tuple:固定长度 固定顺序 固定类型的数组称为元组
+let c:[number,number,string,number];
+// let c:number[];
+// let c:Array<number>;
+// let c:any[];
+c = [1,2,'3',4];
+
+// 枚举 Enum
+// 批量定义固定常亮 常用于状态 分类 选项
+// 默认从0开始自动递增赋值 可直接枚举名取值
+// 把固定的选项变成有名字的常亮
+enum Sex {
+    man, //0
+    woman // 1
+
+    // a = 2
+}
+let d :{
+    name:string,
+    age:number,
+    sex:Sex
+}
+d = {
+    name:"图图",
+    age: 3,
+    sex:Sex.man
+}
+console.log(d.sex == Sex.man ? '男' : '女')
+
+// 类型别名:通过type给类型起名字 
+//格式: type 名字 = 类型
+// 1.联合类型
+type Sex1 = "man" | "woman";
+let e:Sex1;
+e = "man";
+
+// 2.字面量
+type status = 1|2|3;
+let f:status;
+f = 1;
+
+// 3.对象
+type info  = {
+    name: string,
+    age: number,
+    address?:string
+}
+
+// let g:info = {
+
+// }
+
+// 交叉类型
+// 合并多个类型 变量必须同时满足所有类型的属性要求
+let h:{name:string} & {age:number}; 
+h = {
+    name:"图图",
+    age: 3
+}
+export {}

+ 1 - 0
ts.ts/编译选项/demo.ts

@@ -0,0 +1 @@
+console.log("你好")

+ 5 - 0
ts.ts/编译选项/dist/a.js

@@ -0,0 +1,5 @@
+"use strict";
+let a = 12121212;
+console.log(a, 'a');
+// document.getElementById
+// document

+ 12 - 0
ts.ts/编译选项/dist/b.js

@@ -0,0 +1,12 @@
+"use strict";
+// let a2= 222;
+// console.log(a2,'a');
+// // document.getElementById
+// // document
+// // document.getElementById("box").onclick = function
+// let a2 = 23;
+// let x:string = 12;
+function fn1() {
+    console.log(this);
+}
+fn1();

+ 5 - 0
ts.ts/编译选项/dist/c.js

@@ -0,0 +1,5 @@
+"use strict";
+let a1 = 333;
+console.log(a1, 'a');
+// document.getElementById
+// document

+ 11 - 0
ts.ts/编译选项/index.html

@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Document</title>
+</head>
+<body>
+    <script src="./dist/b.js"></script>
+</body>
+</html>

+ 6 - 0
ts.ts/编译选项/src/a.ts

@@ -0,0 +1,6 @@
+import {xxxx} from './b';
+console.log(xxxx);
+let a = 12121212;
+console.log(a,'a');
+// document.getElementById
+// document

+ 17 - 0
ts.ts/编译选项/src/b.ts

@@ -0,0 +1,17 @@
+// let a2= 222;
+// console.log(a2,'a');
+// // document.getElementById
+// // document
+// // document.getElementById("box").onclick = function
+// let a2 = 23;
+// let x:string = 12;
+// function fn1() {
+//     console.log(this)
+// }
+// fn1()
+function fn2(x:any, y:any) {
+    return x + y
+}
+fn2(1, 2);
+fn2("111", "222");
+export const xxxx = '妹妹';

+ 7 - 0
ts.ts/编译选项/src/c.ts

@@ -0,0 +1,7 @@
+let a1 = 333;
+console.log(a1,'a');
+let box = document.getElementById("box");
+box?.addEventListener("click",function() {
+    console.log("你好")
+})
+// document

+ 2 - 0
ts.ts/编译选项/src/only.js

@@ -0,0 +1,2 @@
+console.log("大家好")
+console.log(age);

+ 59 - 0
ts.ts/编译选项/tsconfig.json

@@ -0,0 +1,59 @@
+{
+    // tsc 编译全部文件
+    // tsc -w 监听编译
+    // tsc xxx.ts
+    /*
+        ./ 同级
+        ../ 上一级
+        任意目录 **
+        任意文件 *
+    */
+    // 匹配入口文件
+    "include": [
+        "./src/**/*"
+    ],
+    // 排除文件入口
+    // "exclude": [
+    //      "./src/**/*"
+    // ],
+    // "files": [ 单文件
+    //     "./src/a.ts",
+    // ],
+    // "extends": 继承
+    // 编译选项
+    "compilerOptions": {
+        // "ignoreDeprecations": "6.0",
+        // 指定ts编译成哪个js的版本
+        //  'es5', 'es6', 'es2015', 'es2016', 'es2017', 'es2018', 'es2019', 'es2020', 'es2021', 'es2022', 'es2023', 'es2024', 'esnext'.
+        "target": "es6",
+        // 模块"commonjs", "amd", "system", "umd", "es6", "es2015", "es2020", "esnext", "none", "es2022", "node16", "node18", "node20", "nodenext", "preserve"
+        "module": "amd", 
+        // 用于规定使用什么库
+        "lib": ["DOM","ES2015"],
+        // 将编译后的文件放在哪个位置
+        "outDir": "./dist",
+        // 将编译后的所有文件全部放到一个文件下
+        // "outFile": "./dist/app.js"
+        // 是否对js文件进行编译
+        // "allowJs": true,
+        // // 是否对js文件进行检查
+        // "checkJs": true
+        // 是否移除注释
+        // "removeComments": true
+        // 是否对错误进行编译 检查 影响生成
+        // "noEmitOnError": false
+        // 只检查 不影响生成 false
+        // 不生成 true
+        // 类型检查出错误 不输出
+        "noEmit": false,
+        "strict": true,
+        // 编译后的文件是否是严格模式
+        "alwaysStrict": true,
+        // 规定是否允许使用this
+        "noImplicitThis": true,
+        // 不允许使用默认类型的any
+        "noImplicitAny": false,
+        "strictNullChecks": true
+
+    }
+}