Q: 身为工程师,你觉得有什麽工具大大提高了工作效率?
A: 单身看文章的人表示: 看个文章也中枪 XDDD (孤独万岁 单身无罪~
好 终於来讲 TypeScript 才有的型别了, 今天会提到的有:any / unknow / void / never。
如果你不希望某些值出现型别检查错误,可以使用any
,他是用来表示允许赋值为任意型别。
❌ 假设我们设定 myFavoriteNumber 变数的值的型别为 string
, 若使用数字则会报错。
let myFavoriteNumber: string = 'seven';
myFavoriteNumber = 7;
//error : Cannot assign to 'myFavoriteNumber' because it is a constant.
✅ 这时候使用any
, 则允许任何型别。
let myFavoriteNumber: any = 'seven';
myFavoriteNumber = 7;
let obj: any = { x: 0 };
obj.bar = 100;
obj = "hello";
const n: number = obj;
const s: string = obj;
const b: boolean = obj;
console.log(n); //hello
宣告一个变数为任意值之後,对它的任何操作,返回的内容的型别都是任意值。在 any
型别下,可以赋值给任何型别,使用任何属性和方法,都是被允许的。 但这样是非常危险,非必要都不会使用any
,要慎用~
any
型别变数如果在宣告的时候,未指定其型别,那麽它会被识别为any
型别:
例子1:
let something;
something = 7;
something = "seven";
例子2:
function fn(s) {
console.log(s.subtr(3));
}
fn(42);
any
如上面所述,未指定型别则被识为 any
, 如果你想避免这种情况, 可以在 tsconfig 设定 noImplicitAny = true
,或是打开"strict": true
开启所有严谨模式。 他就会提醒你使用了any
型别。
unknow 可以接受任何型别赋值, 有点类似 any
类型, 但使用上比 any
安全,来看下面例子:
function f1(a: any) {
a.b(); //ok
}
function f2(a: unknown) {
a.b();//error: Property 'b' does not exist on type 'unknown'.
}
使用 unknow
, 会报错没有b函式的属性, 而 any
则会不会告诉你。
虽然 unknown 和 any 一样可以接受任何型别赋值,但 any 可以赋值给任何型别,unknown 只能赋值给 any 和自己。
let value: unknown;
let value1: unknown = value; // ok
let value2: any = value; // ok
let value3: boolean = value; // error
let value4: number = value; // error
let value5: string = value; // error
let value6: object = value; // error
let value7: any[] = value; // error
let value8: Function = value; // error
JavaScript 没有空值(void)的概念,在 TypeScript 中,可以用 void 表示没有任何返回值的函式,如以下例子,这个函式只有 alert,不会 return 任何值。
function alertName(): void {
alert('My name is iris');
}
来表示不应该存在的状态的型别,一般用於错误处理函式。
function error(message: string): never {
throw new Error(message);
}
此外, 以下面例子,参数使用Union Types(联合型别),当参数被判断没有其他型别时,也会被视为 never
。
function fn(x: string | number) {
if (typeof x === "string") {
// do something
} else if (typeof x === "number") {
// do something else
} else {
x; // has type 'never'!
}
}
边学习边纪录的测试例子,不嫌弃可参考这里。
下篇也是继续笔记TypeScript才有的那些型别,感谢阅读, 明天见~
https://willh.gitbook.io/typescript-tutorial/basics/any
https://www.typescriptlang.org/tsconfig#noImplicitAny
https://www.typescriptlang.org/docs/handbook/2/functions.html#never
https://www.typescriptlang.org/docs/handbook/2/functions.html#unknown
>>: Day10 X 实作一个简单的 Virtualized List 吧!
很快的我们来到做删除的部分, 很快速的,我们先来看一下如果我们要把东西从试算表删除该怎麽做: 我们从...
这个得上一篇:https://ithelp.ithome.com.tw/articles/10259...
前言 Go 语言中的有关档案操作的工具,不可不提到标准函式库里边的io/ioutil 和 os pa...
在工作中或多或少都会遇到空白行存在的情况。如果只有几个空白行,那麽手动轻松删除即可,但是遇到100行...
任务中心界面 今天进行任务中心的界面页,本界面设有三大重点,点数、签到、每日任务。 而签到则以本Ap...