• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2* Copyright (C) 2025 HiHope Open Source Organization.
3* Licensed under the Apache License, Version 2.0 (the "License");
4* you may not use this file except in compliance with the License.
5* You may obtain a copy of the License at
6*
7*   http://www.apache.org/licenses/LICENSE-2.0
8*
9* Unless required by applicable law or agreed to in writing, software
10* distributed under the License is distributed on an "AS IS" BASIS,
11* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12* See the License for the specific language governing permissions and
13* limitations under the License.
14*/
15export async function sleep(time: number): Promise<number> {
16  return new Promise<number>((resolve): void => {
17    setTimeout((): void => {
18      resolve(1);
19    }, time);
20  });
21};
22
23
24export const TSpromiseTest1: Promise<string> = new Promise((resolve) => {
25  setTimeout(() => resolve('66'), 100);
26});
27
28export const TSpromiseTest2: Promise<number> = new Promise((resolve) => {
29  setTimeout(() => resolve(66), 100);
30});
31
32export const TSpromiseTest3: Promise<boolean> = new Promise((resolve) => {
33  setTimeout(() => resolve(true), 100);
34});
35
36export const TSpromiseTest4: Promise<bigint> = new Promise((resolve) => {
37  setTimeout(() => resolve(66n), 100);
38});
39
40
41interface testObject {
42  age: number;
43};
44
45export const TSpromiseTest5: Promise<testObject> = new Promise((resolve) => {
46  setTimeout(() => resolve({
47    age: 30
48  }), 100);
49});
50
51export const TSpromiseTest6: Promise<testObject> = new Promise((resolve) => {
52  setTimeout(() => resolve({
53    age: 30
54  }), 100);
55});
56
57export const TSpromiseTest7: Promise<number[]> = new Promise((resolve) => {
58  setTimeout(() => resolve([65, 66, 67]), 100);
59});
60
61export const TSpromiseTest8: Promise<() => string> = new Promise((resolve) => {
62  setTimeout(() => resolve(() => 'Hello World!'), 100);
63});
64
65export const TSpromiseTest9: Promise<void> = new Promise((resolve) => {
66  setTimeout(() => resolve(), 100);
67});
68
69export const TSpromiseTest10: Promise<null> = new Promise((resolve) => {
70  setTimeout(() => resolve(null), 100);
71});
72
73export const TSpromiseTest11: Promise<undefined> = new Promise((resolve) => {
74  setTimeout(() => resolve(undefined), 100);
75});
76
77export const TSpromiseTest12: Promise<never> = new Promise((_, reject) => {
78  setTimeout(() => reject(new Error('For test')), 100);
79});
80
81
82class Person {
83  name: string = '';
84  surname: string = '';
85
86  constructor(n: string, sn: string) {
87    this.name = n;
88    this.surname = sn;
89  };
90
91  fullName(): string {
92    return this.name + ' ' + this.surname;
93  }
94};
95
96export const TSpromiseTest13: Promise<Person> = new Promise((resolve) => {
97  setTimeout(() => resolve(
98    new Person('John', 'Smith')
99  ), 100);
100});
101
102
103class For14TSpromiseTest {
104  name: string = '';
105  age: number = 0;
106
107  constructor(n: string, age: number) {
108    this.name = n;
109    this.age = age;
110  };
111
112  fullName(): string {
113    return this.name;
114  };
115
116  getAge(): number {
117    return this.age;
118  };
119};
120
121export const TSpromiseTest14: Promise<number> = new Promise((resolve) => {
122  const p = new For14TSpromiseTest('John', 66);
123  setTimeout(() => resolve(
124    p.getAge()
125  ), 100);
126});
127
128
129export const TSpromiseTest16: Promise<number> = new Promise((resolve) => {
130  setTimeout(() => resolve(66), 100);
131});
132
133export const TSpromiseTest17: Promise<never> = new Promise((_, reject) => {
134  setTimeout(() => reject(new Error('For test')), 100);
135});
136
137export const TSpromiseTest18: Promise<never> = new Promise((_, reject) => {
138  const errorMessage = 'For test';
139  setTimeout(() => reject(new Error(errorMessage)), 100);
140});
141
142export const TSpromiseTest19: Promise<never> = new Promise((_, reject) => {
143  setTimeout(() => reject(new Error('For test')), 100);
144});
145
146
147
148export function TSpromiseTest24(num: number): Promise<number> {
149  const promise1 = new Promise<number>(resolve => setTimeout(() => resolve(num * 2), 100));
150  const promise2 = new Promise<number>(resolve => setTimeout(() => resolve(num * 3), 100));
151  const promise3 = new Promise<number>((resolve, reject) => setTimeout(() => reject(new Error('For test')), 100));
152
153  return Promise.race([promise1, promise2, promise3]);
154};
155
156
157export function TSpromiseTest25(num: number): Promise<PromiseSettledResult<number>[]> {
158  const promise1 = new Promise<number>(resolve => setTimeout(() => resolve(num * 2), 100));
159  const promise2 = new Promise<number>(resolve => setTimeout(() => resolve(num * 3), 100));
160  const promise3 = new Promise<number>((resolve, reject) => setTimeout(() => reject(new Error('For test')), 100));
161
162  return Promise.allSettled([promise1, promise2, promise3]);
163};
164
165
166export function TSpromiseTest26(num: number): Promise<number> {
167  const promise1 = new Promise<number>(resolve => setTimeout(() => resolve(num * 2), 100));
168  const promise2 = new Promise<number>(resolve => setTimeout(() => resolve(num * 3), 100));
169  const promise3 = new Promise<number>((resolve, reject) => setTimeout(() => reject(new Error('For test')), 100));
170
171  return Promise.any([promise1, promise2, promise3]);
172};
173
174export const TSpromiseTest27: Promise<number> = new Promise((resolve) => {
175  resolve(1);
176})
177  .then((value: number) => value + 1)
178  .then((value: number) => value + 2)
179  .then((value: number) => value + 3)
180  .then((value: number) => value + 4)
181  .then((value: number) => value + 5);
182
183export const TSpromiseTest28: Promise<number> = new Promise((resolve) => {
184  resolve(1);
185})
186  .then((value: number) => value + 1)
187  .then((value: number) => value + 2)
188  .then((value: number) => value + 3)
189  .catch((error: unknown) => {
190    console.error('First catch:', error);
191    return 0;
192  })
193  .catch((error: unknown) => {
194    console.error('Second catch:', error);
195    return -1;
196  });
197
198export const TSpromiseTest29 = new Promise((resolve) => {
199  resolve(1);
200})
201  .then((value: number) => value + 1)
202  .then((value: number) => value + 2)
203  .catch((error: unknown) => {
204    console.log('First catch:', error);
205    return 0;
206  })
207  .catch((error: unknown) => {
208    console.log('Second catch:', error);
209    return -1;
210  })
211  .finally(() => {
212    console.log('end');
213  });