From 178e42675a2bd0d6339a57c76a1fca0a7c91b96e Mon Sep 17 00:00:00 2001 From: afeiship <1290657123@qq.com> Date: Sun, 20 Nov 2022 12:27:57 +0800 Subject: [PATCH] feat: init --- .editorconfig | 11 -- .gitignore | 4 +- .npmignore | 8 - .npmrc | 1 - LICENSE | 0 LICENSE.txt | 21 --- README.md | 8 +- cmd/root.go | 36 +++++ go.mod | 11 ++ go.sum | 19 +++ main.go | 11 ++ misc/index.go | 10 ++ package.json | 18 --- .../001-get-started/001-installation.md | 8 - .../001-get-started/code/001-greeter.js | 10 -- .../001-get-started/code/001-greeter.ts | 17 -- .../001-get-started/code/002-person.js | 5 - .../001-get-started/code/002-person.ts | 14 -- .../001-get-started/code/003-person-class.js | 15 -- .../001-get-started/code/003-person-class.ts | 24 --- src/2020-05/002-ts-with-gulp/001-doc.md | 2 - src/2020-05/003-guide/001-types.md | 151 ------------------ .../003-guide/002-variable-declarations.md | 97 ----------- src/2020-05/003-guide/003-interfaces.md | 26 --- src/2020-05/003-guide/004-extends.md | 53 ------ src/2020-05/003-guide/005-functions.md | 2 - src/2020-05/003-guide/006-generics.md | 5 - src/2020-05/003-guide/007-enums.md | 23 --- src/2020-05/003-guide/008-advanced-types.md | 36 ----- src/2020-05/003-guide/009-namespaces.md | 26 --- .../003-guide/010-namespaces-and-modules.md | 9 -- src/2020-05/003-guide/011-decorators.md | 11 -- src/2020-05/003-guide/012-mixins.md | 29 ---- .../003-guide/013-triple-slash-directives.md | 12 -- .../003-guide/014-declaration-files.md | 6 - src/2020-05/004-tsdx/001-get-started.md | 22 --- ...-\345\244\215\345\206\231property-omit.ts" | 19 --- ...\231\345\244\232\344\270\252props-omit.ts" | 10 -- 38 files changed, 90 insertions(+), 700 deletions(-) delete mode 100644 .editorconfig delete mode 100644 .npmignore delete mode 100644 .npmrc create mode 100644 LICENSE delete mode 100644 LICENSE.txt create mode 100644 cmd/root.go create mode 100644 go.mod create mode 100644 go.sum create mode 100644 main.go create mode 100644 misc/index.go delete mode 100644 package.json delete mode 100644 src/2020-05/001-get-started/001-installation.md delete mode 100644 src/2020-05/001-get-started/code/001-greeter.js delete mode 100644 src/2020-05/001-get-started/code/001-greeter.ts delete mode 100644 src/2020-05/001-get-started/code/002-person.js delete mode 100644 src/2020-05/001-get-started/code/002-person.ts delete mode 100644 src/2020-05/001-get-started/code/003-person-class.js delete mode 100644 src/2020-05/001-get-started/code/003-person-class.ts delete mode 100644 src/2020-05/002-ts-with-gulp/001-doc.md delete mode 100644 src/2020-05/003-guide/001-types.md delete mode 100644 src/2020-05/003-guide/002-variable-declarations.md delete mode 100644 src/2020-05/003-guide/003-interfaces.md delete mode 100644 src/2020-05/003-guide/004-extends.md delete mode 100644 src/2020-05/003-guide/005-functions.md delete mode 100644 src/2020-05/003-guide/006-generics.md delete mode 100644 src/2020-05/003-guide/007-enums.md delete mode 100644 src/2020-05/003-guide/008-advanced-types.md delete mode 100644 src/2020-05/003-guide/009-namespaces.md delete mode 100644 src/2020-05/003-guide/010-namespaces-and-modules.md delete mode 100644 src/2020-05/003-guide/011-decorators.md delete mode 100644 src/2020-05/003-guide/012-mixins.md delete mode 100644 src/2020-05/003-guide/013-triple-slash-directives.md delete mode 100644 src/2020-05/003-guide/014-declaration-files.md delete mode 100644 src/2020-05/004-tsdx/001-get-started.md delete mode 100644 "src/2021-08/001-\345\244\215\345\206\231property-omit.ts" delete mode 100644 "src/2021-08/002-\345\244\215\345\206\231\345\244\232\344\270\252props-omit.ts" diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index beffa30..0000000 --- a/.editorconfig +++ /dev/null @@ -1,11 +0,0 @@ -root = true - -[*] -indent_style = space -indent_size = 2 -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[*.md] -trim_trailing_whitespace = false diff --git a/.gitignore b/.gitignore index 0cf530c..deec664 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,2 @@ -node_modules -bower_components -coverage .idea +lcc \ No newline at end of file diff --git a/.npmignore b/.npmignore deleted file mode 100644 index a620b9c..0000000 --- a/.npmignore +++ /dev/null @@ -1,8 +0,0 @@ -.idea -.DS_Store -**/npm-debug.log -**/node_modules -test -src -gulp -gulpfile.js diff --git a/.npmrc b/.npmrc deleted file mode 100644 index b8db633..0000000 --- a/.npmrc +++ /dev/null @@ -1 +0,0 @@ -sass_binary_site=https://npm.taobao.org/mirrors/node-sass/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e69de29 diff --git a/LICENSE.txt b/LICENSE.txt deleted file mode 100644 index abce289..0000000 --- a/LICENSE.txt +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 afei <1290657123@qq.com> - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/README.md b/README.md index 53f5491..cf9bd2e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,2 @@ -# typescript-notes -> Typescript learning notes. - - -## resources -- https://basarat.gitbook.io/typescript/ +# leancloud-cli +> Leancloud cli for options curd. \ No newline at end of file diff --git a/cmd/root.go b/cmd/root.go new file mode 100644 index 0000000..c4c5cbb --- /dev/null +++ b/cmd/root.go @@ -0,0 +1,36 @@ +package cmd + +import ( + "github.com/spf13/cobra" + "os" +) + +// rootCmd represents the base command when called without any subcommands +var rootCmd = &cobra.Command{ + Use: "lcc", + Short: "Leancloud cli for options curd.", + // Uncomment the following line if your bare application + // has an action associated with it: + // Run: func(cmd *cobra.Command, args []string) { }, +} + +// Execute adds all child commands to the root command and sets flags appropriately. +// This is called by main.main(). It only needs to happen once to the rootCmd. +func Execute() { + err := rootCmd.Execute() + if err != nil { + os.Exit(1) + } +} + +func init() { + // Here you will define your flags and configuration settings. + // Cobra supports persistent flags, which, if defined here, + // will be global for your application. + + // rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.lcc.yaml)") + + // Cobra also supports local flags, which will only run + // when this action is called directly. + rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..9413a33 --- /dev/null +++ b/go.mod @@ -0,0 +1,11 @@ +module lcc + +go 1.19 + +require ( + github.com/go-resty/resty/v2 v2.7.0 // indirect + github.com/inconshreveable/mousetrap v1.0.1 // indirect + github.com/spf13/cobra v1.6.1 // indirect + github.com/spf13/pflag v1.0.5 // indirect + golang.org/x/net v0.0.0-20211029224645-99673261e6eb // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..5a857e4 --- /dev/null +++ b/go.sum @@ -0,0 +1,19 @@ +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY= +github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= +github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= +github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= +github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +golang.org/x/net v0.0.0-20211029224645-99673261e6eb h1:pirldcYWx7rx7kE5r+9WsOXPXK0+WH5+uZ7uPmJ44uM= +golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/main.go b/main.go new file mode 100644 index 0000000..f0abc4f --- /dev/null +++ b/main.go @@ -0,0 +1,11 @@ +/* +Copyright © 2022 NAME HERE + +*/ +package main + +import "lcc/cmd" + +func main() { + cmd.Execute() +} diff --git a/misc/index.go b/misc/index.go new file mode 100644 index 0000000..48d2d2e --- /dev/null +++ b/misc/index.go @@ -0,0 +1,10 @@ +package misc + +import "github.com/go-resty/resty/v2" + +func GetLc(key) { + client := resty.New() + // format url + // url := "https://8alqie7r.lc-cn-n1-shared.com/1.1/classes/options/" + key + +} diff --git a/package.json b/package.json deleted file mode 100644 index fbd2410..0000000 --- a/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "typescript-notes", - "version": "1.0.0", - "description": "Typescript learning notes.", - "scripts": { - }, - "repository": { - "type": "git", - "url": "git+https://github.com/afeiship/typescript-notes.git" - }, - "keywords": [], - "author": "", - "license": "ISC", - "bugs": { - "url": "https://github.com/afeiship/typescript-notes/issues" - }, - "homepage": "https://github.com/afeiship/typescript-notes#readme" -} diff --git a/src/2020-05/001-get-started/001-installation.md b/src/2020-05/001-get-started/001-installation.md deleted file mode 100644 index 6ff7feb..0000000 --- a/src/2020-05/001-get-started/001-installation.md +++ /dev/null @@ -1,8 +0,0 @@ -# installation - -```shell -npm install -g typescript -``` - -## playground -- https://www.typescriptlang.org/play/ diff --git a/src/2020-05/001-get-started/code/001-greeter.js b/src/2020-05/001-get-started/code/001-greeter.js deleted file mode 100644 index 9ebe89d..0000000 --- a/src/2020-05/001-get-started/code/001-greeter.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * - * cd /Users/feizheng/github/typescript-notes/src/2020-05/001-get-started/code - * tsc 001-greeter.ts - */ -function greeter(person) { - return "Hello, " + person; -} -var user = "Jane User"; -document.body.innerHTML = greeter(user); diff --git a/src/2020-05/001-get-started/code/001-greeter.ts b/src/2020-05/001-get-started/code/001-greeter.ts deleted file mode 100644 index c55be58..0000000 --- a/src/2020-05/001-get-started/code/001-greeter.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** - * - * cd /Users/feizheng/github/typescript-notes/src/2020-05/001-get-started - * tsc 001-greeter.ts - */ - - -function greeter(person: string) { - return "Hello, " + person; -} - -let user = "Jane User"; - -document.body.innerHTML = greeter(user); - - - diff --git a/src/2020-05/001-get-started/code/002-person.js b/src/2020-05/001-get-started/code/002-person.js deleted file mode 100644 index 062ce23..0000000 --- a/src/2020-05/001-get-started/code/002-person.js +++ /dev/null @@ -1,5 +0,0 @@ -function greeter(person) { - return "Hello, " + person.firstName + " " + person.lastName; -} -var user = { firstName: "Jane", lastName: "User" }; -document.body.innerHTML = greeter(user); diff --git a/src/2020-05/001-get-started/code/002-person.ts b/src/2020-05/001-get-started/code/002-person.ts deleted file mode 100644 index 601148b..0000000 --- a/src/2020-05/001-get-started/code/002-person.ts +++ /dev/null @@ -1,14 +0,0 @@ -interface Person{ - firstName: string, - lastName: string -} - - -function greeter(person:Person) { - return "Hello, " + person.firstName + " " + person.lastName; -} - - -let user = { firstName: "Jane", lastName: "User" }; - -document.body.innerHTML = greeter(user); diff --git a/src/2020-05/001-get-started/code/003-person-class.js b/src/2020-05/001-get-started/code/003-person-class.js deleted file mode 100644 index 1d5f2d1..0000000 --- a/src/2020-05/001-get-started/code/003-person-class.js +++ /dev/null @@ -1,15 +0,0 @@ -// https://www.tslang.cn/docs/handbook/typescript-in-5-minutes.html -var Student = /** @class */ (function () { - function Student(firstName, middleInitial, lastName) { - this.firstName = firstName; - this.middleInitial = middleInitial; - this.lastName = lastName; - this.fullName = firstName + " " + middleInitial + " " + lastName; - } - return Student; -}()); -function greeter(person) { - return "Hello, " + person.firstName + " " + person.lastName; -} -var user = new Student("Jane", "M.", "User"); -document.body.innerHTML = greeter(user); diff --git a/src/2020-05/001-get-started/code/003-person-class.ts b/src/2020-05/001-get-started/code/003-person-class.ts deleted file mode 100644 index d2bed68..0000000 --- a/src/2020-05/001-get-started/code/003-person-class.ts +++ /dev/null @@ -1,24 +0,0 @@ -// https://www.tslang.cn/docs/handbook/typescript-in-5-minutes.html - -interface Person { - firstName: string, - lastName: string -} - - -class Student { - fullName: string; - constructor(public firstName, public middleInitial, public lastName) { - this.fullName = firstName + " " + middleInitial + " " + lastName; - } -} - - -function greeter(person: Person) { - // return "Hello, " + person.firstName + " " + person.lastName; - return "Hello, " + person.firstName + ' ' + person.lastName; -} - -let user = new Student("Jane", "M.", "User"); - -document.body.innerHTML = greeter(user); diff --git a/src/2020-05/002-ts-with-gulp/001-doc.md b/src/2020-05/002-ts-with-gulp/001-doc.md deleted file mode 100644 index a70b0e1..0000000 --- a/src/2020-05/002-ts-with-gulp/001-doc.md +++ /dev/null @@ -1,2 +0,0 @@ -# doc -- https://www.tslang.cn/docs/handbook/gulp.html diff --git a/src/2020-05/003-guide/001-types.md b/src/2020-05/003-guide/001-types.md deleted file mode 100644 index b391247..0000000 --- a/src/2020-05/003-guide/001-types.md +++ /dev/null @@ -1,151 +0,0 @@ -# types - - -## boolean -```ts -let isDone: boolean = false; -``` - -## numbers -```ts -let decLiteral: number = 6; -let hexLiteral: number = 0xf00d; -let binaryLiteral: number = 0b1010; -let octalLiteral: number = 0o744; -``` - -## string -```ts -let name: string = `Gene`; -let age: number = 37; -let sentence: string = `Hello, my name is ${ name }. - -I'll be ${ age + 1 } years old next month.`; -``` - -## array -```ts -let list1: number[] = [1, 2, 3]; -let list2: Array = [1, 2, 3]; -``` - ---- - -## Tuple -> 元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为 string和number类型的元组。 - -```ts -// Declare a tuple type -let x: [string, number]; -// Initialize it -x = ['hello', 10]; // OK -// Initialize it incorrectly -x = [10, 'hello']; // Error -``` - -## Enum -> 枚举 - -```ts -// 无默认值(0,1,2) -enum Color { Red, Green, Blue }; - -// 翻译成 js 如下 -"use strict"; -var Color; -(function (Color) { - Color[Color["Red"] = 0] = "Red"; - Color[Color["Green"] = 1] = "Green"; - Color[Color["Blue"] = 2] = "Blue"; -})(Color || (Color = {})); -console.log(Color.Green); - - -// 有默认值 -enum Color { Red: 1, Green: 2, Blue: 4}; -``` - -## Any -> 有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。 -> 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 -> 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 那么我们可以使用 any类型来标记这些变量: - -```ts -let notSure: any = 4; -notSure = "maybe a string instead"; -notSure = false; // okay, definitely a boolean - -let list: any[] = [1, true, "free"]; -``` - -## Void -> 某种程度上来说,void类型像是与any类型相反,它表示没有任何类型。 - -```ts -function warnUser(): void { - console.log("This is my warning message"); -} - -// 声明一个void类型的变量没有什么大用,因为你只能为它赋予 undefined 和 null : -let unusable: void = undefined; -``` - -## Null 和 Undefined -```ts -// Not much else we can assign to these variables! -let u: undefined = undefined; -let n: null = null; -``` - -## Never -> never类型表示的是那些永不存在的值的类型。 - -```ts -// 返回never的函数必须存在无法达到的终点 -function error(message: string): never { - throw new Error(message); -} - -// 推断的返回值类型为never -function fail() { - return error("Something failed"); -} - -// 返回never的函数必须存在无法达到的终点 -function infiniteLoop(): never { - while (true) { - } -} -``` - -## Object -> object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。 - -```ts -// object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。 - -declare function create(o: object | null): void; - -create({ prop: 0 }); // OK -create(null); // OK - -create(42); // Error -create("string"); // Error -create(false); // Error -create(undefined); // Error -``` - -## 类型断言 -> 个人感觉,强制类型转换。 - -```ts -// 类型断言有两种形式。 其一是“尖括号”语法: - -let someValue: any = "this is a string"; -let strLength: number = (someValue).length; - -// 另一个为as语法: - -let someValue: any = "this is a string"; -let strLength: number = (someValue as string).length; -``` diff --git a/src/2020-05/003-guide/002-variable-declarations.md b/src/2020-05/003-guide/002-variable-declarations.md deleted file mode 100644 index e3ad305..0000000 --- a/src/2020-05/003-guide/002-variable-declarations.md +++ /dev/null @@ -1,97 +0,0 @@ -# variable-declarations -- https://www.tslang.cn/docs/handbook/variable-declarations.html - - -## why not var -```ts -function -``` - -## 作用域规则 -- 变量 x是定义在*if语句里面*,但是我们却可以在语句的外面访问它。 -- 这是因为 var声明可以在包含它的函数,模块,命名空间或全局作用域内部任何位置被访问(我们后面会详细介绍),包含它的代码块对此没有什么影响。 -- 有些人称此为* var作用域或函数作用域*。 函数参数也使用函数作用域。 - -```ts -function f(shouldInitialize: boolean) { - if (shouldInitialize) { - var x = 10; - } - return x; -} - -f(true); // returns '10' -f(false); // returns 'undefined' - - -// 与下面的代码的区别 -function f(){ - // ReferenceError: x is not defined - return x; -} -``` - -## 其中之一就是,多次声明同一个变量并不会报错 -- 注意代码中的 `i` 重复运用了。 - -```ts -function sumMatrix(matrix: number[][]) { - var sum = 0; - for (var i = 0; i < matrix.length; i++) { - var currentRow = matrix[i]; - for (var i = 0; i < currentRow.length; i++) { - sum += currentRow[i]; - } - } - return sum; -} -``` - -## 捕获变量怪异之处 -> 出了名的闭包问题。 -> 介绍一下,setTimeout会在若干毫秒的延时后执行一个函数(等待其它代码执行完毕)。 - -```ts -for (var i = 0; i < 10; i++) { - setTimeout(function() { console.log(i); }, 100 * i); -} -// 10 -// 10 -// 10 -// 10 -// ... -``` - -## 期待的结果 -```ts -for (var i = 0; i < 10; i++) { - // capture the current state of 'i' - // by invoking a function with its current value - (function(i) { - setTimeout(function() { console.log(i); }, 100 * i); - })(i); -} -``` - -## let -> 当用let声明一个变量,它使用的是词法作用域或块作用域。 不同于使用 var声明的变量那样可以在包含它们的函数外访问,块作用域变量在包含它们的块或for循环之外是不能访问的。 - -```ts -function f(input: boolean) { - let a = 100; - if (input) { - // Still okay to reference 'a' - let b = a + 1; - return b; - } - // Error: 'b' doesn't exist here - return b; -} -``` - - -## 块级作用域链 -拥有块级作用域的变量的另一个特点是 -- 它们不能在被声明之前读或写。 -- 虽然这些变量始终“存在”于它们的作用域里,但在直到声明它的代码之前的区域都属于 暂时性死区。 -- 它只是用来说明我们不能在 let语句之前访问它们,幸运的是TypeScript可以告诉我们这些信息。 diff --git a/src/2020-05/003-guide/003-interfaces.md b/src/2020-05/003-guide/003-interfaces.md deleted file mode 100644 index e1ced43..0000000 --- a/src/2020-05/003-guide/003-interfaces.md +++ /dev/null @@ -1,26 +0,0 @@ -# interfaces -> 接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。 - - -## normal/optional/readonly -```ts -interface Person{ - name: string; - age: number; -} - -interface SquareConfig { - color?: string; - width?: number; -} - -interface Point { - readonly x: number; - readonly y: number; -} -``` - - -## misunderstand -- 可索引的类型 -- implements(少见使用,暂时不了解) diff --git a/src/2020-05/003-guide/004-extends.md b/src/2020-05/003-guide/004-extends.md deleted file mode 100644 index 3b962e6..0000000 --- a/src/2020-05/003-guide/004-extends.md +++ /dev/null @@ -1,53 +0,0 @@ -# extends - -## 成员权限 -- default(public) -- public -- private -- protected - - -## readonly -```ts -class Octopus { - readonly name: string; - readonly numberOfLegs: number = 8; - constructor (theName: string) { - this.name = theName; - } -} -``` - -## abstract class -> 抽象类做为其它派生类的基类使用。 它们一般不会直接被实例化。 -> 不同于接口,抽象类可以包含成员的实现细节。 -> abstract关键字是用于定义抽象类和在抽象类内部定义抽象方法。 - -```ts -abstract class Animal { - abstract makeSound(): void; - move(): void { - console.log('roaming the earch...'); - } -} -``` - -## 把类当做接口使用 -> 类定义会创建两个东西:类的实例类型和一个构造函数。 因为类可以创建出类型,所以你能够在允许使用接口的地方使用类。 - -```ts -class Point { - x: number; - y: number; -} - -interface Point3d extends Point { - z: number; -} - -let point3d: Point3d = { - x: 1, - y: 2, - z: 3 -}; -``` diff --git a/src/2020-05/003-guide/005-functions.md b/src/2020-05/003-guide/005-functions.md deleted file mode 100644 index 6a02617..0000000 --- a/src/2020-05/003-guide/005-functions.md +++ /dev/null @@ -1,2 +0,0 @@ -# functions -- https://www.tslang.cn/docs/handbook/functions.html diff --git a/src/2020-05/003-guide/006-generics.md b/src/2020-05/003-guide/006-generics.md deleted file mode 100644 index ab0019c..0000000 --- a/src/2020-05/003-guide/006-generics.md +++ /dev/null @@ -1,5 +0,0 @@ -# generics -> 软件工程中,我们不仅要创建一致的定义良好的API,同时也要考虑可重用性。 -> 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。 - -- https://www.tslang.cn/docs/handbook/generics.html diff --git a/src/2020-05/003-guide/007-enums.md b/src/2020-05/003-guide/007-enums.md deleted file mode 100644 index 29afcc7..0000000 --- a/src/2020-05/003-guide/007-enums.md +++ /dev/null @@ -1,23 +0,0 @@ -# enums -- https://www.tslang.cn/docs/handbook/enums.html - -## auto enum -```ts -enum E2 { - A = 1, B, C -} -``` - -## computed enum -```ts -enum FileAccess { - // constant members - None, - Read = 1 << 1, - Write = 1 << 2, - ReadWrite = Read | Write, - // computed member - G = "123".length -} -``` - diff --git a/src/2020-05/003-guide/008-advanced-types.md b/src/2020-05/003-guide/008-advanced-types.md deleted file mode 100644 index f744835..0000000 --- a/src/2020-05/003-guide/008-advanced-types.md +++ /dev/null @@ -1,36 +0,0 @@ -# advanced-types - - -## union/intersection - -```ts -function extend(first: T, second: U): T & U { - let result = {}; - for (let id in first) { - (result)[id] = (first)[id]; - } - for (let id in second) { - if (!result.hasOwnProperty(id)) { - (result)[id] = (second)[id]; - } - } - return result; -} -``` - - -## string/number -> 联合类型与交叉类型很有关联,但是使用上却完全不同。 偶尔你会遇到这种情况,一个代码库希望传入 number或 string类型的参数。 例如下面的函数: - -```ts -/** - * Takes a string and adds "padding" to the left. - * If 'padding' is a string, then 'padding' is appended to the left side. - * If 'padding' is a number, then that number of spaces is added to the left side. - */ -function padLeft(value: string, padding: string | number) { - // ... -} - -let indentedString = padLeft("Hello world", true); // errors during compilation -``` diff --git a/src/2020-05/003-guide/009-namespaces.md b/src/2020-05/003-guide/009-namespaces.md deleted file mode 100644 index cf0263b..0000000 --- a/src/2020-05/003-guide/009-namespaces.md +++ /dev/null @@ -1,26 +0,0 @@ -# namespaces - - - -```ts -// LettersOnlyValidator.ts -/// -namespace Validation { - const lettersRegexp = /^[A-Za-z]+$/; - export class LettersOnlyValidator implements StringValidator { - isAcceptable(s: string) { - return lettersRegexp.test(s); - } - } -} -// ZipCodeValidator.ts -/// -namespace Validation { - const numberRegexp = /^[0-9]+$/; - export class ZipCodeValidator implements StringValidator { - isAcceptable(s: string) { - return s.length === 5 && numberRegexp.test(s); - } - } -} -``` diff --git a/src/2020-05/003-guide/010-namespaces-and-modules.md b/src/2020-05/003-guide/010-namespaces-and-modules.md deleted file mode 100644 index 0058643..0000000 --- a/src/2020-05/003-guide/010-namespaces-and-modules.md +++ /dev/null @@ -1,9 +0,0 @@ -# namespaces-and-modules -- https://www.tslang.cn/docs/handbook/namespaces-and-modules.html - - - -## namespace/module -请务必注意一点,TypeScript 1.5里术语名已经发生了变化。 -- “内部模块”现在称做“命名空间”。 -- “外部模块”现在则简称为“模块”,这是为了与 ECMAScript 2015里的术语保持一致,(也就是说 module X { 相当于现在推荐的写法 namespace X {)。 diff --git a/src/2020-05/003-guide/011-decorators.md b/src/2020-05/003-guide/011-decorators.md deleted file mode 100644 index 40a3fd5..0000000 --- a/src/2020-05/003-guide/011-decorators.md +++ /dev/null @@ -1,11 +0,0 @@ -# decorators - -## tsconfig.json: -```json -{ - "compilerOptions": { - "target": "ES5", - "experimentalDecorators": true - } -} -``` diff --git a/src/2020-05/003-guide/012-mixins.md b/src/2020-05/003-guide/012-mixins.md deleted file mode 100644 index e5051e2..0000000 --- a/src/2020-05/003-guide/012-mixins.md +++ /dev/null @@ -1,29 +0,0 @@ -# mixins -- https://www.tslang.cn/docs/handbook/mixins.html - - -```ts -// Disposable Mixin -class Disposable { - isDisposed: boolean; - dispose() { - this.isDisposed = true; - } - -} - -// Activatable Mixin -class Activatable { - isActive: boolean; - activate() { - this.isActive = true; - } - deactivate() { - this.isActive = false; - } -} - -class SmartObject implements Disposable, Activatable { - -} -``` diff --git a/src/2020-05/003-guide/013-triple-slash-directives.md b/src/2020-05/003-guide/013-triple-slash-directives.md deleted file mode 100644 index c4c20c1..0000000 --- a/src/2020-05/003-guide/013-triple-slash-directives.md +++ /dev/null @@ -1,12 +0,0 @@ -# triple-slash-directives -- https://www.tslang.cn/docs/handbook/triple-slash-directives.html - - -~~~ -三斜线指令仅可放在包含它的文件的最顶端。 -一个三斜线指令的前面只能出现单行或多行注释,这包括其它的三斜线指令。 -如果它们出现在一个语句或声明之后,那么它们会被当做普通的单行注释,并且不具有特殊的涵义。 -~~~ - - - diff --git a/src/2020-05/003-guide/014-declaration-files.md b/src/2020-05/003-guide/014-declaration-files.md deleted file mode 100644 index 960163a..0000000 --- a/src/2020-05/003-guide/014-declaration-files.md +++ /dev/null @@ -1,6 +0,0 @@ -# declaration-files -- https://www.tslang.cn/docs/handbook/declaration-files/introduction.html - - - - diff --git a/src/2020-05/004-tsdx/001-get-started.md b/src/2020-05/004-tsdx/001-get-started.md deleted file mode 100644 index 783a09a..0000000 --- a/src/2020-05/004-tsdx/001-get-started.md +++ /dev/null @@ -1,22 +0,0 @@ -# get-started -- https://github.com/jaredpalmer/tsdx#readme -- https://github.com/splitbee/react-notion - - -> Zero-config CLI for TypeScript package development https://npm.im/tsdx - - -## quick start -~~~ -npx tsdx create mylib -cd mylib -yarn start -~~~ - - -```shell -npm i -g tsdx - -tsdx --version -# tsdx, 0.13.2 -``` diff --git "a/src/2021-08/001-\345\244\215\345\206\231property-omit.ts" "b/src/2021-08/001-\345\244\215\345\206\231property-omit.ts" deleted file mode 100644 index dd2833b..0000000 --- "a/src/2021-08/001-\345\244\215\345\206\231property-omit.ts" +++ /dev/null @@ -1,19 +0,0 @@ -// https://stackoverflow.com/questions/41285211/overriding-interface-property-type-defined-in-typescript-d-ts-file - -interface App { - name: string; - api: () => Promise; -} - -interface AppDown extends Omit { - api: string; -} - -type App1 = { - name: string; - api: () => Promise; -}; - -type AppDown1 = Omit & { - api: string; -}; diff --git "a/src/2021-08/002-\345\244\215\345\206\231\345\244\232\344\270\252props-omit.ts" "b/src/2021-08/002-\345\244\215\345\206\231\345\244\232\344\270\252props-omit.ts" deleted file mode 100644 index 5d4b9e5..0000000 --- "a/src/2021-08/002-\345\244\215\345\206\231\345\244\232\344\270\252props-omit.ts" +++ /dev/null @@ -1,10 +0,0 @@ -interface AppLoader { - name: string; - size: number; - api: () => Promise; -} - -interface AppDownLoader extends Omit { - api: string; - size: () => number; -}