1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| function fn<T>(opt: T): T{ return opt } fn<string>('') fn('')
interface inter<A> { name: A sayHi: () => A } let i: inter<string> = { name: '', sayHi: () => '' }
class C<B> { name: B constructor(name: B) { this.name = name } } let u = new C<string>('ss')
function fn<T,U>(arr: [T,U]): [U, T] { return [arr[1], arr[0]] } fn(['1', 1])
function fn<T>(s: T): T{ return s }
interface p { length: number }
function fn<T extends p>(s:T):T { clg(s.length) return s }
function fn<types, K extends keyof types>(obj: types, k: K) { return obj[k] } let o = {name: '', age: 1} fn(o, 'name')
interface inter { name: string age: number sex: number } type partial_v = Partial<inter> let p: partial_v = {}
type readonly_v = Readonly<inter> let p: readonly_v = { name: '', age: 1, sex: 0 }
type pick_v = Pick<inter, 'name'|'age'> let p: pick_v = { name: '', age: 1 }
type prt = 'name' | 'age' interface inter2 { value: string } type record_v = Record<prt, inter2> let p: record_v = { name: { value: ''}, age: { value: ''} }
|