function joi<JJ>(first: JJ,second: JJ){
return first + second
}
joi<number>(1,2)
joi<string>('1','2')
function joi<JJ,PP>(first: JJ,second: PP){
return first + second
}
joi<string,number>('1',2)
class SSS<T>{
constructor (private g: T[]){}
getG(index:number):T{
return this.g[index]
}
}
const s = new SSS<string>(['1','2','3'])
console.log(s.getG(0))
interface S{
name: string;
}
class SSS<T extends S>{
constructor (private g: T[]){}
getG(index:number):string{
return this.g[index].name
}
}
const s = new SSS([
{name: '1'},
{name: '2'},
{name: '3'}
])
console.log(s.getG(0))
class SSS<T extends number | string>{
constructor (private g: T[]){
}
getG(index:number):T{
return this.g[index]
}
}
const s = new SSS<string>(['1','2','3'])
console.log(s.getG(0))