const s1: String = "123";
const s2: String = new String('asdas');
const s3: string = "123";
const a: object = { foo: 'asd' }
let obj: { foo: string } & { bar: string }
obj = {
foo: 'asd',
bar: "asd"
}
type world = 'world'
type gree = `hello${world}`
let arr: number[] = [1, 2, 3]
let arr1: (string | number)[] = [1, '2']
let arr2: Array<string | number> = [1, '2']
let rarr: readonly number[] = [1, 2, 3]
let a1: ReadonlyArray<number> = [1, 2, 3]
let a2: Readonly<number[]> = [1, 2, 3]
const a3 = [1, 2, 3] as const
let arrd: number[][] = [[1, 2], [3, 4]]
const t: [string, boolean?] = ['asd', true]
const t1: [string, ...number[]] = ['asd', 1, 2, 3]
type t = readonly [string, boolean?]
type t2 = Readonly<[string, boolean?]>
const t3: [...number[]] = [1, 2]
function tt(x: number, y: number) { }
tt(...t3 as [number, number])
const sy: unique symbol = Symbol()
const f1 = function name(params: string) { }
const f2: (text: string) => void = (text) => { }
function add(x: number, y: number) {
return x + y
}
const myadd: typeof add = function (x, y) {
return x + y
}
let foo: {
(x: number): void;
version: string;
} = f;
function f(x: number) {
console.log(x);
}
f.version = "1.0";
type myfn = {
(x: number): void
}
interface myfn2 {
(x: number): void
}
type Person = { name: string }
const peo = ['as'].map((name): Person => ({ name }))
let fnn = function (str?: string) {
if (undefined !== str) { }
}
fnn()
let funn = function (str: number = 0) { }
funn(undefined)
function fnnn([x, y]: [number, number]) { }
function repeat(str: string, times: number): string { return 's' }
function repeat2(...[str, tiems]: [string, number]): string { return 's' }
function repeat3(arr: readonly number[]) { }
function fu(): void {
return undefined;
}
type viodfunc = () => void
const fv: viodfunc = () => {
return 123
}
function fail(msg: string): never {
throw new Error(msg)
}
(someVlue: number) => (multipliter: number) => someVlue * multipliter
function reverse(str: string): string;
function reverse(arr: any[]): any[];
function reverse(strr: string | any[]): string | any[] {
if (typeof strr === 'string') {
return strr.split('').reverse().join('')
} else {
return strr.reverse()
}
}
console.log(reverse("abc"));
console.log(reverse([1, 2, 3]));
class pppp {
add(str: string): this
add(num: number): this
add(value: any): any {
return this
}
}
type CreateElement = {
(tag: "a"): HTMLAnchorElement;
(tag: "canvas"): HTMLCanvasElement;
(tag: "table"): HTMLTableElement;
(tag: string): HTMLElement;
};
function len1(s: string): number;
function len1(arr: any[]): number;
function len1(x: any): number {
return x.length;
}
function len2(x: any[] | string): number {
return x.length;
}
class Animal {
num: number = 4
}
type Animcons = new () => Animal
function create(c: Animcons): Animal {
return new c()
}
const anmi = create(Animal)
type F = {
new(s: string): object
(n?: number): number
}
const obj1: {
x: number,
y: number,
add(x: number): number
} = {
x: 1,
y: 2,
add(x: number) {
return this.x + x
}
}
type User = {
name: string
}
type Name = User['name']
type myface = {
toString(): string
prop: number
}
const obj2: myface = {
prop: 123
}
const user: {
firstName: string;
lastName?: string;
} = { firstName: "Foo" };
let firstName = user.firstName ?? "Foo";
let lastName = user.lastName ?? "Bar";
interface myinf {
readonly prop: number
}
const p2: {
readonly aa: {
name: string
}
} = {
aa: {
name: 'sadasad'
}
}
p2.aa.name = 'asddaasdas'
interface Person1 {
name: string;
age: number;
}
interface ReadonlyPerson {
readonly name: string;
readonly age: number;
}
let w: Person1 = {
name: "Vicky",
age: 42,
};
let r: ReadonlyPerson = w;
w.age += 1;
r.age;
const myuuser = {
name: "asdad"
} as const
const myuuser2: { name: string } = {
name: "asdad"
} as const
myuuser2.name = 'adsadadsa'
type Myobj = {
[p: string]: string
}
type T1 = {
[property: number]: string;
};
type T2 = {
[property: symbol]: string;
};
const obj3: Myobj = {
name: 'asdasd',
age: '123'
}
const arrrr: T1 = {
1: 'asdasd',
2: 'asdasd'
}
const B = {
x: 1,
y: 1,
};
const A: { x: number } = B;
const myPoint = {
x: 1,
y: 2
}
const point: { x: number } = myPoint
let x: {
foo: number;
[x: string]: any;
};
x = { foo: 1, baz: 2 };
const ddasd: {} = {}
let d1: {}
d1 = {}
d1 = { x: 1 }
interface FOOOO {
a: string
}
type Aaaaa = FOOOO["a"]
interface AAAA {
[prop: string]: number
}
interface AA {
f(x: boolean): string
}
interface BB {
f: (x: boolean) => string
}
interface CC {
f: { (x: boolean): string }
}
const fffff = 'f'
interface DD {
[fffff](x: boolean): string
}
interface myinterface {
f(): string
f(x: string): number
f(x: string, y: number): string
}
function myfunc(): string
function myfunc(x: string): number
function myfunc(x: string, y: number): string
function myfunc(x?: string, y?: number): string | number {
if (x && y) {
return x + y
} else if (x) {
return x
} else {
return 'asdasd'
}
}
const aaaaa: myinterface = {
f: myfunc
}
interface addd {
(x: number, y: number): number
}
const myadddd: addd = (x, y) => x + y
interface MyConstructor {
new(x: number): number
}
type count = {
name: string
}
interface count1 extends count {
age: number
}
class MyClass {
name: string = ""
}
interface B extends MyClass {
z: number
}
const bbb: B = {
name: 'asdsad',
z: 123
}
interface MyClass1123 {
name: string
}
interface MyClass1123 {
age: number
}
interface fooo {
add(num: number): this
}
type mystr = string & {
type: "new"
}
class c {
_name = ""
get name(): string {
return this._name
}
set name(value: number | string) {
this._name = String(value)
}
}
class MyClass1 {
[x: string]: boolean | ((s: string) => boolean)
get(s: string) {
return this[s] as boolean
}
}
interface country {
name: string
age: number
}
class mycountry implements country {
name = 'asd'
age = 123
}
class Car {
id: number = 1
}
class myCar implements Car {
id: number = 1
}
class A11 {
x: number = 1;
}
interface A11 {
y: number;
}
let a11 = new A11();
a11.y = 10;
a11.x;
a11.y;
class Point {
x: number;
y: number;
constructor(x: number, y: number) {
this.x = x;
this.y = y;
}
}
function createPoint1(PointClass: typeof Point, x: number, y: number) {
return new PointClass(x, y);
}
function createPoint2(PointClass: new (x: number, y: number) => Point, x: number, y: number) {
return new PointClass(x, y);
}
function createPoint3(PointClass: {
new(x: number, y: number): Point
}, x: number, y: number) {
return new PointClass(x, y);
}
interface PointCons {
new(x: number, y: number): Point
}
function createPoint4(PointClass: PointCons, x: number, y: number) {
return new PointClass(x, y);
}
class point1 {
x!: number;
y!: number;
static t: number
constructor(x: number) { }
}
class posiiton {
x!: number
y!: number
z!: number
constructor(x: string) { }
}
const po: point1 = new posiiton("")
class A111 {
private name = 'a'
}
class B111 extends A111 { }
const a123: A111 = new B111()
class A1111 {
protected name = 'asd'
}
class B1111 extends A1111 { }
const a123213: A1111 = new B1111()
class AA {
greet() {
console.log("Hello, world!");
}
}
class BB extends AA {
greet(name?: string): void {
if (name === undefined) {
super.greet()
} else {
console.log(`hello ${name}`);
}
}
}
const b = new BB();
b.greet();
class AAA12 {
greeting() {
return 'sadsd'
}
}
class BBB12 {
greeting() {
return 'sadsd'
}
}
interface Greeter {
greeting(): string
}
interface getcon {
new(): Greeter
}
function getbase(): getcon {
return true ? AAA12 : BBB12
}
class Test extends getbase() {
sayhello() {
console.log('hello');
}
}
class pri {
#x = 1
}
const pria = new pri()
class singleton {
private static instance?: singleton
private constructor() { }
static getInstaance() {
if (!singleton.instance) {
singleton.instance = new singleton()
}
return singleton.instance
}
}
const ssssss = singleton.getInstaance()
console.log(ssssss);
class Point1 {
x: number;
y: number;
constructor(x: number, y: number) {
this.x = x;
this.y = y;
}
}
class Point2 {
constructor(public x: number, public y: number) { }
}
class Box1<T> {
contets: T
constructor(value: T) {
this.contets = value
}
}
const box1: Box1<string> = new Box1<string>('asdsa')
abstract class AA1 {
id = 1
abstract foo: string;
}
class BB1 extends AA1 {
aut = 100
foo = ';asd';
}
const bb1 = new BB1()
bb1.id
abstract class CC1 extends AA1 {
name = 'asd'
}
function fooo(this: { name: string }) {
this.name = 'ads'
}
function map<T, U>(arr: T[], f: (age: T) => U): U[] {
return arr.map(f)
}
map<string, number>(['1', '2', '3'], (n) => parseInt(n))
function id<T>(arg: T): T {
return arg;
}
let myId1: <T>(arg: T) => T = id;
let myId2: { <T>(arg: T): T } = id;
interface Box<T> {
name: T
}
let box: Box<string> = {
name: "asdsa"
}
interface comp<T> {
compar(value: T): number
}
class reac implements comp<reac>{
compar(value: reac): number {
return 1
}
}
class A1<T> {
name: T | undefined
}
class B1 extends A1<any>{ }
const contar = class <T>{
constructor(private readonly data: T) { }
}
const contar1 = new contar<string>('asdsa')
const contar2 = new contar<number>(123)
class C<T>{
value!: T
add!: (x: T, y: T) => T
}
let fff = new C<number>()
fff.value = 0
fff.add = (x, y) => x + y
type myclass1<T> = new (...args: any[]) => T
interface myclass2<T> {
new(...args: any[]): T
}
function create1<T>(anyclass: myclass1<T>, ...args: any[]): T {
return new anyclass(...args)
}
type nullable<T> = T | undefined | null
type tree<T> = {
value: T
left: tree<T> | null
right: tree<T> | null
}
function getfit<U, T = string>(arr: T[]): T {
return arr[0]
}
let arrr: Array<number> = [1, 2]
let arrr1: ReadonlyArray<number> = [1, 2]
function comp<T extends { length: number }>(a: T, b: T) {
return a.length === b.length
}
type fnn1<A extends string, B extends string = 'world'> = [A, B]
type result = fnn1<'hello'>