console.log("Hello world! - typescript.jsrun.net")
let temp: string = "1, 2, 3"
const fun = (temp: string) => temp.split(',')
console.log(fun(temp))
var a: number = 1;
let b: string = 'typescript';
const c: boolean = true;
const e: undefined = undefined;
const f: null = null;
let obj: object = { a: 'A', b: 'B' }
let t: Symbol = Symbol()
let m = Symbol()
let x: any = 8;
let x1: string = 'yun'
let x2: boolean = false
let v: unknown = 123;
let unk1: unknown = { foo: 123 };
let unk12: unknown = 'hello';
(unk12 as string).trim()
console.log(unk12)
let unk123: unknown = (n = 0) => n + 1;
let nTemp: never;
function n2(): never {
throw new Error('Error');
}
let nv1: number = n2();
let nv12: string = n2();
let nv13: boolean = n2();
function getName(str: String): void {
console.log('123');
return
}
let nrr: number[] = [1, 2, 3]
let srr: string[] = ['a', 'b', 'c']
let arrNew2: Array<number> = [1, 2, 3]
let brr2: Array<string> = ['a', 'b']
let arr: [string, number] = ['a', 2]
arr.push(2)
console.log(arr);
enum num {
one,
two,
three
};
let n: num = num.two
console.log(n);
type otherName = string | boolean
let bNew: otherName
console.log( bNew = '使用type关键字起别名')
function hander2(x: number, y: number, z?: number) {
}
type myx = { x: number, y: number, z?: number }
function hander3(mytype: myx) {
}
interface myX2 {
x: number
y: number
z?: number
}
interface myX2 {
z?: number
}
function hander4(mytype: myX2) { }
interface myIn8 {
x: number
y: number
}
interface myIn3 extends myIn8 {
m?: number
}
function hander5(mytype: myIn3) {
console.log(mytype.x, mytype.y, mytype.m)
}
hander5({ x: 1, y: 2, m: 7 })
type Teacher = { name: string }
type Person = { age: number }
type teacherPerson = Teacher & Person
let all: teacherPerson = { name: '小明', age: 18 }
console.log(all)
function getString(something: string | number): string {
return something.toString();
}
console.log(getString('这是字符串'))
console.log(getString(678))
let someValue: any = function () { };
let func = someValue as Function;
let someValue2: any = 42;
let num2 = someValue2 as number;
function combine<T>(arr1: T[], arr2: T[]): T[] {
return arr1.concat(arr2)
}
let tempT = combine<number | string>([1, 2], ['a', 'b'])
console.log(tempT)
type Dog = { name: string; age: number; };
type D = keyof Dog;
type BaseType = string | number
function copy<T extends BaseType>(arg: T): T {
return arg
}
copy(1)
type ReadonlyFor<T> = {
readonly [P in keyof T]: T[P]
};
interface Obj {
a: string;
b: string;
}
type ReadonlyObj = ReadonlyFor<Obj>
let mr: ReadonlyObj = { a: 'a', b: 'b' }
console.log(mr)
type IsString<T> = T extends string ? true : false;
type I1 = IsString<"abc">;
type I31 = IsString<321>;