-
// void、undefined 與 never
function printResult () : void {
????console.log("lalala");
}
console.log(printResult()); // 報錯
function printResult () : undefined? {
????console.log("lalala");
}
console.log(printResult());?
function throwError(message: string, errorCode: number) :never{
????throw {
????????message,
????????errorCode
????}
}
throwError("not found", 404);
function whileLoop(): never {
?????while(true) {
????????console.log("hahah")
????}
}
查看全部 -
// any 和 unkonwn
let randomValue: any = 666;
randomValue = true;
randomValue = "asdga";
randomValue = {};
randomValue(); // 報錯
randomValue.toUpperCase();?// 報錯
let randomValue: unknown= 666;
randomValue = true;
randomValue = "asdga";
randomValue = {};
if(typeof randomValue === 'function') {
????randomValue();?
}
if(typeof randomValue === 'string') {
????randomValue.toUpperCase();?// 報錯
}
查看全部 -
// 枚舉類型 Enum
enum Color {
????red,
????green,
????blue
}
let color = Color.blue;
console.log(color);
enum Color2 {
????red = 2,
????green = 10,
????blue = 1
}
enum Color3 {
????red = "red",
????green = "green",
????blue = 1
}
查看全部 -
// 聯合(Union)與文獻[Literal]類型
let union: string | number
union = 2;
union = "uuhkd";
union = true; // 報錯
let union2: number | string | boolean | string[];
const merge = (n1:? number | string, n2: number | string, resultType: "as-number" | "as-string" ) => {
? ? if(resultType === "as-string" {
????????return n1.toString() + n2.toString();
????}
????if(typeof n1 === "string" || typeof n2 === "string")?
????????return n1.toString() + n2.toString();
????else?
????????return n1 + n2
}
let mergeNumber = merge(2, 5, "as-number");
let mergeNumber = merge(2, 5, "as-string");
let mergeString = merge("hello", "world", "as-string");
// 字面量類型(literal)
let union3: 0 | 1 | 2
union3 = 1;
查看全部 -
let list1: number[] = [1, 2, 3, 4, 5];?// number數組類型
let list2: Array<number> = [1, 2, 3, 4, 5];?// 泛型
let list3= [1, 2, 3, 4, 5];
let list4 = [1, "dd"];
let list5: any[] = [1, "dss", true];? // any數組類型
// tuple? 固定長度、固定類型的array
let person1: [number, string] = [1, "hhh"];?// 元組(特殊數組,固定長度,固定類型)
查看全部 -
lite-server快速搭建本地服務器
查看全部 -
通過使用泛型,完美的保證代碼中類型的一致性
let message = <T>(arr: T[]) => {
? ?return arr[arr.length -1]
}
const a1 =?message([1,2,3,4])
const a2 = message(["1","2","3"])
const a3 = message<string | number>(["a","b","c",4])
let makeTuple = <T,Y>(x: T, y:Y) => [x, y]
const v1 =?makeTuple(1, "one")
const v2 =?makeTuple<number | string>(1, "one")
查看全部 -
類型適配(類型斷言)Type Assertions
let message : any;
message = 'abc';
message.endsWith('c'); // 此時不會生效,雖然上面已經指定了字段為字符串,但是字段默認初始類型為any.
let ddd = (<string>message).endsWith('c') // 類型斷言為string,此時可以調用字符串的方法了
let ddd = (message as string).endsWith('c') // 類型斷言為string,此時可以調用字符串的方法了
查看全部 -
聯合類型(union)
let union: string | number | boolean | string[] = 5
let union: 0 | 1 | 2 //不僅聯合類型確定了,值也確定了
字面量類型(literal)
let literal : 1 || '2' || true || [1,2,3]
查看全部 -
let array: Array<number> = [1,2,3] // 泛型
let array: any[] = [1,2,3,'ddd',true] // any數組類型
let array: number[] = [1,2,3] // number數組類型
let person1: [number, string] = [1,'ddd'] // 元組(特殊數組,固定長度,固定類型)
查看全部 -
課程大綱
查看全部 -
高級類型
查看全部 -
類型記錄
查看全部 -
11111
查看全部 -
數組中只有0和1,每過1代,0旁邊只有1個1,當前0會變成1。每過1代,0旁邊有2個1,當前0還是0。 比如10001,經過1代,會變成11011,再過1代,還是11011 。 求一個數組經過M代以后的數組。函數定義是void f(int[] arr,int m) 。
答案2022-01-08:
x里有有限個0。 1x1,中間0,x中有2m個0變成1,最中間的0不會變成1。 1x,右0,x中有m個0變成1。 x1,左0,x中有m個0變成1。 時間復雜度:O(N)。 空間復雜度:O(1)。
package?mainimport?"fmt"func?main()?{ ????arr?:=?[]byte{0,?1,?0,?0,?0,?0,?0,?1,?0,?0,?0} ????f(arr,?2) ????fmt.Println(arr) }func?f(arr?[]byte,?m?int)?{????//找中間0 ????oneIndexList?:=?make([]int,?0)????for?i,?a?:=?range?arr?{????????if?len(oneIndexList)?==?2?{ ????????????oneIndexList?=?oneIndexList[1:] ????????}????????if?a?==?1?{ ????????????oneIndexList?=?append(oneIndexList,?i) ????????}????????if?len(oneIndexList)?==?2?{????????????for?j?:=?oneIndexList[0]?+?1;?j?<=?oneIndexList[1]-1;?j++?{????????????????if?j-oneIndexList[0]?!=?oneIndexList[1]-j?&& ????????????????????(j-oneIndexList[0]?<=?m?|| ????????????????????????oneIndexList[1]-j?<=?m)?{ ????????????????????arr[j]?=?1 ????????????????} ????????????} ????????} ????}
查看全部
舉報