let str: string = 'TS';
let temp: string = `web${str}`;
let num: number = 123
let bool: boolean = 2 > 3
let bool2: boolean = false
let nu: void = null
let nu2: void = undefined
console.log(nu)
function fn(): void {
console.log(111)
return null
}
let nu3: null = null
let nu4: undefined = undefined
let nu5: undefined = null
let nu6: null = undefined
nu6 = nu3
console.log(nu3)
let test_any: any = 'str'
test_any = {}
test_any = []
test_any = null
test_any = Symbol('111')
let temp: unknown = { a: 123 }
let temp2: unknown = 'str'
let num10 = 3
num10 = 123
let num12
num12 = {}
num12 = 123
let lh1: string | number = 123
lh1 = 'jp'
console.log(lh1.length)
lh1 = 123
console.log(lh1.length)
interface A {
name: string
age: number
}
let A1: A = {
name: 'jp',
age: 12
}
interface B {
name: string
age?: number
}
let B1: B = {
name: 'jp',
}
interface A{
name:string,
age:number
}
interface B extends A{
city:String
}
let ab:B ={
age:12,
name:'jp',
city:'xi,an'
}
interface C {
[propName: string]: any
}
let C1: C = {
name: 'jp',
obj: {}
}
interface D {
readonly name: string
}
let D1: D = {
name: 'jp'
}
D1.name = 'ccc'
interface E extends B {
a: string[]
}
let E1: E = {
name: 'jp',
age: 122,
a: ['1']
}
interface F {
fn(): void,
fun(): object
}
let F1: F = {
fn() {
console.log(123)
},
fun() {
return { a: 1 }
}
}
let arr: number[] = [1, 2]
let arr2: string[] = ['1', '2']
let arr3: boolean[] = [false, true]
let arr4: any[] = [false, true, {}, 1, 'str']
let arr8: number[][][] = [[[]], [[]]]
let arr5: Array<number> = [1, 2]
let arr6: Array<string> = ['1', '2']
let arr7: Array<boolean> = [false, true]
let arr9: Array<Array<number | string>> = [[1, '2']]
function ArrFunction(...args: any): void {
let arr: IArguments = arguments
}
function fun1(num: number, str: string): string {
return num + str
}
let fun2 = function (num: number, str: string): string {
return num + str
}
interface Ifn {
(num: number, str: string): string
}
let fun3: Ifn
fun3 = function (a, b) {
return a + b
}
let fun4 = function (firstName: string, lastName?: string): string {
if (lastName) {
return firstName + lastName
} else return firstName
}
let strFun4: string = fun4('j')
strFun4 = fun4('j', 'p')
let fun5 = function (firstName?: string, lastName: string = 'p'): string {
if (firstName) {
return firstName + lastName
} else return lastName
}
function push(arr: any[], ...items: any[]) {
items.forEach(item => {
arr.push(item)
})
}
let a = []
push(a, 1, 2, 3, 4, 5)
function reverse(x: string | number): string | number {
if (typeof x === 'number') {
return Number(x.toString().split('').reverse().join())
} else return x.split('').reverse().join()
}
interface IOne {
name: string,
funOne(): void
}
interface ITwo {
name: string,
funTow(): void
}
function tempFun(params: IOne | ITwo): boolean {
if (typeof (params as ITwo).funTow === 'function') {
return true
} else return false
}
type Name = string
type MyFun = () => string
type MyStrFun = string | MyFun
function getName(n: MyStrFun): Name {
if (typeof n === 'string') {
return n
} else return n()
}
getName(() => {
return 'jp'
})
getName('jp')
type EventNames = 'click' | 'scroll' | 'mousemove'
function handleEvent(ele:Element,event:EventNames){
}
handleEvent(document.querySelector('body'),'click')
handleEvent(document.querySelector('body'),'dblclick')
let tom:[string,number] = ['interface',15]
console.log(tom[0])
tom[0] = 'any'
tom = ['void',25]
tom.push('await')
tom.push(18)
tom.push(true)
enum Days { Sun, Mon, Tue, Wed, Thu, Fri, Sat }
console.log(Days['Sun'] === 0)
console.log(Days['Mon'] === 1)
console.log(Days['Tue'] === 2)
console.log(Days['Wed'])
console.log(Days[0] === 'Sun')
console.log(Days[1] === 'Mon')
console.log(Days[2] === 'Tue')
console.log(Days[3])
class SayName {
public _name
constructor(name: string) {
this._name = name
}
sayHi() {
return `my name is ${this._name}`
}
}
let say = new SayName('jp')
console.log(say.sayHi())
class GetSet {
constructor(name: string) {
this.name = name
}
get name() {
return 'jp'
}
set name(val) {
console.log('setter:' + val)
}
}
let getSet = new GetSet('_jp')
console.log(getSet.name)
getSet.name = 'CCC'
console.log(getSet.name)
class SayName {
public name
constructor(name: string) {
this.name = name
}
sayHi() {
return `My name is ${this.name}`
}
static sayHello() {
return `hello jp`
}
}
let sayName = new SayName('jp')
console.log(sayName.sayHi())
console.log(SayName.sayHello())
class Test1 {
public _name
constructor(name: string) {
this._name = name
}
}
let a = new Test1('jp')
console.log(a._name)
a._name = 'jdp'
console.log(a._name)
class Test2 {
private _name
constructor(name: string) {
this._name = name
}
}
let a1 = new Test2('jp')
console.log(a1._name)
a1._name = 'jdp'
console.log(a1._name)
class Test3 {
protected _name
constructor(name: string) {
this._name = name
}
}
class Test4 extends Test3 {
constructor(name: string) {
super(name)
console.log(name)
}
}
class Test {
public _name: string
constructor(name) {
this._name = name
}
}
class Test2 {
constructor(public _name: string, name) {
this._name = name
}
}
class Test3 {
readonly _name: string
constructor(name: string) {
this._name = name
}
}
let test3 = new Test3('jp')
console.log(test3._name)
test3._name = 'ccc'
abstract class Test1{
public _name
constructor(name:string){
this._name = name
}
public abstract sayHi():void
}
let a = new Test1('jp')
class Test2 extends Test1{
public sayHi(): void {
console.log(this._name)
}
}
function createArray(length: number, value: any): Array<any> {
let result: any[] = []
for (let i = 0; i < length; i++) {
result.push(value)
}
return result
}
let a = createArray(3, 'cc')
console.log(a)
function cerateArrayType<T>(length: number, value: T): Array<T> {
let result: T[] = []
for (let i = 0; i < length; i++) {
result.push(value)
}
return result
}
let aType = cerateArrayType<string>(3,'pp')
let aType2 = cerateArrayType(3,'V')
console.log(aType)
console.log(aType2)
function fun<T, U>(temp: [T, U]): [T, U] {
return [temp[0], temp[1]]
}
let a = fun<string, number>(['jp', 2])
console.log(a)
let b = fun([2, 'jp'])
console.log(b)
interface ITemp {
length: number
}
function fun2<T extends ITemp>(temp: T): T {
console.log(temp.length)
return temp
}
fun2(2)
fun2([1,2])
interface ITemp2 {
<T>(length: number, value: T): Array<T>
}
let createArray2: ITemp2
createArray2 = function <T>(length: number, value: T): T[] {
let result: T[]
for (let i = 0; i < length; i++) {
result.push(value)
}
return result
}
interface ITemp<T> {
(length: number, value: T): T[]
}
let createArray: ITemp<any>
createArray = function <T>(length: number, value: T): T[] {
let result: T[]
for (let i = 0; i < length; i++) {
result.push(value)
}
return result
}
class Temp<T>{
public age: T
public add: (x: T, y: T) => T
}
let temp1 = new Temp<number>()
temp1.age = 12
temp1.add = function (x, y) {
return x + y
}
let num = temp1.add(12, 14)
console.log(num)
function createArray<T = string>(length: number, value: T): T[] {
let result: Array<T>
for (let i = 0; i < length; i++) {
result.push(value)
}
return result
}