博客园 - 黑色瓶子
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=138984
2022-04-19T06:22:42Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
feed.cnblogs.com
https://www.cnblogs.com/wjaaron/p/13370481.html
vue-cli 项目可以做的优化 - 黑色瓶子
公司的一个管理后台项目是基于 vue-cli3 搭建的,这两天我将它升级到了 vue-cli4,顺手也做了一些优化,主要是从 webpack 方面入手,优化一下生产环境的代码。 这里简单提一下怎么升级脚手架版本的,首先将你电脑中的脚手架版本升级到 4,直接重新安装就好,然后在你的项目中执行 vue
2020-07-24T02:20:00Z
2020-07-24T02:20:00Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
【摘要】公司的一个管理后台项目是基于 vue-cli3 搭建的,这两天我将它升级到了 vue-cli4,顺手也做了一些优化,主要是从 webpack 方面入手,优化一下生产环境的代码。 这里简单提一下怎么升级脚手架版本的,首先将你电脑中的脚手架版本升级到 4,直接重新安装就好,然后在你的项目中执行 vue <a href="https://www.cnblogs.com/wjaaron/p/13370481.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wjaaron/p/12993385.html
vue3.0 上手体验 - 黑色瓶子
vue3.0 beta 版本已经发布有一阵子了,是时候上手体验一波了~ 注意,本文所有演示都是基于 vue3.0 beta 版本,不保证后续正式版 api 不改动。等官方文档出来后,以官网为准。 环境搭建 直接使用脚手架,如果本地没有安装的可以执行脚手架安装命令: npm install -g @v
2020-05-30T08:29:00Z
2020-05-30T08:29:00Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
【摘要】vue3.0 beta 版本已经发布有一阵子了,是时候上手体验一波了~ 注意,本文所有演示都是基于 vue3.0 beta 版本,不保证后续正式版 api 不改动。等官方文档出来后,以官网为准。 环境搭建 直接使用脚手架,如果本地没有安装的可以执行脚手架安装命令: npm install -g @v <a href="https://www.cnblogs.com/wjaaron/p/12993385.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wjaaron/p/12881392.html
typescript中的类型推论 - 黑色瓶子
使用 typescript 时,在一些定义中如果你没有明确识指定类型,编译器会自动推断出合适的类型,比如: let str = 'hello' str = 123 // error,不能将类型“123”分配给类型“string” 可以看到,定义变量 str 时并没有指定它的类型,而是直接赋值一个字符
2020-05-30T06:12:00Z
2020-05-30T06:12:00Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
【摘要】使用 typescript 时,在一些定义中如果你没有明确识指定类型,编译器会自动推断出合适的类型,比如: let str = 'hello' str = 123 // error,不能将类型“123”分配给类型“string” 可以看到,定义变量 str 时并没有指定它的类型,而是直接赋值一个字符 <a href="https://www.cnblogs.com/wjaaron/p/12881392.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wjaaron/p/12974604.html
typescript 中的 this 类型 - 黑色瓶子
typescript中,this 也是一种类型,一个计算器的例子: class Counter{ constructor(public count:number = 0){} add(value:number){ this.count += value return this } subtract(
2020-05-28T13:59:00Z
2020-05-28T13:59:00Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
【摘要】typescript中,this 也是一种类型,一个计算器的例子: class Counter{ constructor(public count:number = 0){} add(value:number){ this.count += value return this } subtract( <a href="https://www.cnblogs.com/wjaaron/p/12974604.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wjaaron/p/12930899.html
typescript中的类型别名和字面量类型 - 黑色瓶子
类型别名 类型别名就是给一种类型起个别的名字,之后只要使用这个类型的地方,都可以用这个名字作为类型代替。它只是起了一个名字,并不是创建了一个新类型。 定义类型别名,使用 type 关键字: type StringType = string let s: StringType s = 'hello'
2020-05-22T00:37:00Z
2020-05-22T00:37:00Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
【摘要】类型别名 类型别名就是给一种类型起个别的名字,之后只要使用这个类型的地方,都可以用这个名字作为类型代替。它只是起了一个名字,并不是创建了一个新类型。 定义类型别名,使用 type 关键字: type StringType = string let s: StringType s = 'hello' <a href="https://www.cnblogs.com/wjaaron/p/12930899.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wjaaron/p/12923095.html
typescript中的 null 和 undefined - 黑色瓶子
null 和 undefined 是 ts 中的基础类型,分别具有值 null 和 undefined,默认情况下它们是所有类型的子类型,即可以赋值给任意类型,如: let s: string = 'hello' s = null //right s = undefined // right 但当我
2020-05-20T14:45:00Z
2020-05-20T14:45:00Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
【摘要】null 和 undefined 是 ts 中的基础类型,分别具有值 null 和 undefined,默认情况下它们是所有类型的子类型,即可以赋值给任意类型,如: let s: string = 'hello' s = null //right s = undefined // right 但当我 <a href="https://www.cnblogs.com/wjaaron/p/12923095.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wjaaron/p/12915987.html
typescript类型保护 - 黑色瓶子
当遇到需要告诉编译器某个值是指定类型的场景时,我们可以使用类型断言,比如这个例子: const valueList = [123, "hello"] // getValue 函数随机返回数字类型或者字符串类型 function getValue() { const num = Math.random
2020-05-20T01:49:00Z
2020-05-20T01:49:00Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
【摘要】当遇到需要告诉编译器某个值是指定类型的场景时,我们可以使用类型断言,比如这个例子: const valueList = [123, "hello"] // getValue 函数随机返回数字类型或者字符串类型 function getValue() { const num = Math.random <a href="https://www.cnblogs.com/wjaaron/p/12915987.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wjaaron/p/12909736.html
typescript中高级类型之交叉类型与联合类型 - 黑色瓶子
交叉类型 交叉类型的表示方法为 Type1 & Type2,结果是取这两个类型的并集。这里是官网的例子,做了注释: // 定义函数 extend,用来合并对象 function extend<T, U>(first: T, second: U): T & U { // result 是要返回结果,类
2020-05-18T12:47:00Z
2020-05-18T12:47:00Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
【摘要】交叉类型 交叉类型的表示方法为 Type1 & Type2,结果是取这两个类型的并集。这里是官网的例子,做了注释: // 定义函数 extend,用来合并对象 function extend<T, U>(first: T, second: U): T & U { // result 是要返回结果,类 <a href="https://www.cnblogs.com/wjaaron/p/12909736.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wjaaron/p/12905705.html
typescript中的类型兼容性 - 黑色瓶子
函数兼容性 函数参数个数 比如有如下两个函数: let x = (a: number) => 0 let y = (b: number, c: string) => 0 函数参数个数如果要兼容,需要满足条件:如果对函数 y 进行赋值,则 x 中的每个参数都应在 y 中有对应,也就是 x 的参数个数小
2020-05-17T08:34:00Z
2020-05-17T08:34:00Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
【摘要】函数兼容性 函数参数个数 比如有如下两个函数: let x = (a: number) => 0 let y = (b: number, c: string) => 0 函数参数个数如果要兼容,需要满足条件:如果对函数 y 进行赋值,则 x 中的每个参数都应在 y 中有对应,也就是 x 的参数个数小 <a href="https://www.cnblogs.com/wjaaron/p/12905705.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wjaaron/p/12870733.html
typescript中使用泛型 - 黑色瓶子
介绍 这里引入官网一段介绍,了解个大概: 软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。 在像C#和Java这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支
2020-05-12T07:18:00Z
2020-05-12T07:18:00Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
【摘要】介绍 这里引入官网一段介绍,了解个大概: 软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。 在像C#和Java这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支 <a href="https://www.cnblogs.com/wjaaron/p/12870733.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wjaaron/p/12851994.html
typescript定义函数类型 - 黑色瓶子
函数类型 为函数定义类型 给函数定义类型,包括对参数和返回值的类型定义: function add(arg1: number, arg2: number): number { return arg1 + arg2 } // 箭头函数 const add = (arg1: number, arg2:n
2020-05-09T08:00:00Z
2020-05-09T08:00:00Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
【摘要】函数类型 为函数定义类型 给函数定义类型,包括对参数和返回值的类型定义: function add(arg1: number, arg2: number): number { return arg1 + arg2 } // 箭头函数 const add = (arg1: number, arg2:n <a href="https://www.cnblogs.com/wjaaron/p/12851994.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wjaaron/p/12821985.html
typescript中的类与接口的关系 - 黑色瓶子
类实现接口 接口可以规定一个类的定义必须包含某些内容。类实现接口使用关键字 implements。 interface UserInterface{ name:string; age:number; } // 类实现接口 class User implements UserInterface{ na
2020-05-04T00:41:00Z
2020-05-04T00:41:00Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
【摘要】类实现接口 接口可以规定一个类的定义必须包含某些内容。类实现接口使用关键字 implements。 interface UserInterface{ name:string; age:number; } // 类实现接口 class User implements UserInterface{ na <a href="https://www.cnblogs.com/wjaaron/p/12821985.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wjaaron/p/12818119.html
typescript中的类 - 黑色瓶子
typescript 中的类与 es6 中的类在使用上基本一样,举个小例子: class Person{ name:string; constructor(name:string){ this.name = name } sayHi(){ console.log('hi') } } // 定义 Te
2020-05-03T01:49:00Z
2020-05-03T01:49:00Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
【摘要】typescript 中的类与 es6 中的类在使用上基本一样,举个小例子: class Person{ name:string; constructor(name:string){ this.name = name } sayHi(){ console.log('hi') } } // 定义 Te <a href="https://www.cnblogs.com/wjaaron/p/12818119.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wjaaron/p/11707634.html
typescript中的接口 - 黑色瓶子
TypeScript的核心原则之一是对值所具有的结构进行类型检查,而接口就是用来定义值的结构,接口自身当作类型来用。 基本使用 先看一段代码: function func(obj: { name: string }): void { console.log('hello ' + obj.name)
2020-05-02T02:02:00Z
2020-05-02T02:02:00Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
【摘要】TypeScript的核心原则之一是对值所具有的结构进行类型检查,而接口就是用来定义值的结构,接口自身当作类型来用。 基本使用 先看一段代码: function func(obj: { name: string }): void { console.log('hello ' + obj.name) <a href="https://www.cnblogs.com/wjaaron/p/11707634.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wjaaron/p/12283679.html
mac 上配置 ssh 免密登录服务器 【非常简单】 - 黑色瓶子
一、你得有个 ssh 密钥 首先确认你的本地电脑上有 SSH KEY,在 ~/.ssh 目录下: 一般使用过 git 的都会有这个,如果没有,可以使用以下命令创建: ssh-keygen -t rsa -C "youremail@example.com" // 后面填你自己的邮箱 注意下面的操作,不
2020-02-08T07:53:00Z
2020-02-08T07:53:00Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
【摘要】一、你得有个 ssh 密钥 首先确认你的本地电脑上有 SSH KEY,在 ~/.ssh 目录下: 一般使用过 git 的都会有这个,如果没有,可以使用以下命令创建: ssh-keygen -t rsa -C "youremail@example.com" // 后面填你自己的邮箱 注意下面的操作,不 <a href="https://www.cnblogs.com/wjaaron/p/12283679.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wjaaron/p/11749343.html
Go语言中的map(十一) - 黑色瓶子
map是一种无序的基于 key-value 的数据结构,Go语言中的map是引用类型,所以跟切片一样需要初始化才能使用。 定义map 定义 map 的语法如下: map[keyType]ValueType // keyType 键的类型 // ValueType 键对应的值的类型 定义 map 而不
2019-10-28T02:10:00Z
2019-10-28T02:10:00Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
【摘要】map是一种无序的基于 key-value 的数据结构,Go语言中的map是引用类型,所以跟切片一样需要初始化才能使用。 定义map 定义 map 的语法如下: map[keyType]ValueType // keyType 键的类型 // ValueType 键对应的值的类型 定义 map 而不 <a href="https://www.cnblogs.com/wjaaron/p/11749343.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wjaaron/p/11724549.html
Go语言中的切片(十) - 黑色瓶子
go中数组的长度是固定的,且不同长度的数组是不同类型,这样的限制带来不少局限性。于是切片就来了,切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。 定义切片 切片的定义跟数组很类似,区别就是不需要指定长度,如下: 举例: 需要注意的是,
2019-10-26T06:09:00Z
2019-10-26T06:09:00Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
【摘要】go中数组的长度是固定的,且不同长度的数组是不同类型,这样的限制带来不少局限性。于是切片就来了,切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。 定义切片 切片的定义跟数组很类似,区别就是不需要指定长度,如下: 举例: 需要注意的是, <a href="https://www.cnblogs.com/wjaaron/p/11724549.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wjaaron/p/11697275.html
typescript中类型断言理解 - 黑色瓶子
typescript很强大,但是用不好时也会很头痛,开发遇到类型错误的情况不在少数,或许你需要了解类型断言。使用断言,简单来说就是先做好一个假设,使得编译通过。 我一开始接触类型断言时是有点不明白的,后来我了解到原因是 “类型断言更像是类型的选择,而不是类型转换”。我发现不少博客文章里把类型断言说成
2019-10-18T03:15:00Z
2019-10-18T03:15:00Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
【摘要】typescript很强大,但是用不好时也会很头痛,开发遇到类型错误的情况不在少数,或许你需要了解类型断言。使用断言,简单来说就是先做好一个假设,使得编译通过。 我一开始接触类型断言时是有点不明白的,后来我了解到原因是 “类型断言更像是类型的选择,而不是类型转换”。我发现不少博客文章里把类型断言说成 <a href="https://www.cnblogs.com/wjaaron/p/11697275.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wjaaron/p/11672764.html
关于typescript中的枚举你需要知道这些 - 黑色瓶子
数字枚举 数字枚举,即枚举里所有属性的值都是数字类型,先看这段代码: 之前也提到过,当枚举里的属性没指定具体值时,默认值是从 0 开始依次排列,你也可以自己指定具体值,剩下的也是依次递增: 另外,数字枚举在定义值的时候,可以是 常量 或者是 计算出来的。当满足以下条件时,枚举成员可以看作常量: 1.
2019-10-16T09:05:00Z
2019-10-16T09:05:00Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
【摘要】数字枚举 数字枚举,即枚举里所有属性的值都是数字类型,先看这段代码: 之前也提到过,当枚举里的属性没指定具体值时,默认值是从 0 开始依次排列,你也可以自己指定具体值,剩下的也是依次递增: 另外,数字枚举在定义值的时候,可以是 常量 或者是 计算出来的。当满足以下条件时,枚举成员可以看作常量: 1. <a href="https://www.cnblogs.com/wjaaron/p/11672764.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/wjaaron/p/11662110.html
Go语言中的数组(九) - 黑色瓶子
我刚接触go语言的数组时,有点不习惯,因为相对于JavaScript这样的动态语言里的数组,go语言的数组写起来有点不爽。 定义数组 go语言定义数组的格式如下: 初始化数组时,要定义好数组的长度和数组值的类型。注意定义数组时,数组的长度数字应该是常量,如果使用变量来定义长度则会报错: 同时,不同的
2019-10-15T01:45:00Z
2019-10-15T01:45:00Z
黑色瓶子
https://www.cnblogs.com/wjaaron/
【摘要】我刚接触go语言的数组时,有点不习惯,因为相对于JavaScript这样的动态语言里的数组,go语言的数组写起来有点不爽。 定义数组 go语言定义数组的格式如下: 初始化数组时,要定义好数组的长度和数组值的类型。注意定义数组时,数组的长度数字应该是常量,如果使用变量来定义长度则会报错: 同时,不同的 <a href="https://www.cnblogs.com/wjaaron/p/11662110.html" target="_blank">阅读全文</a>