1/** 2 * Copyright (c) 2024-2025 Huawei Device Co., Ltd. 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 const tsInt = 1; 16export class MainClass { 17 constructor(value) { 18 this._value = value; 19 } 20}; 21export let IIFEClass = (function () { 22 return class { 23 constructor(value) { 24 this._value = value; 25 } 26 }; 27})(); 28export let AnonymousClass = class { 29 constructor(value) { 30 this._value = value; 31 } 32}; 33export class ParentClass { 34 constructor(otherClass) { 35 this._otherClass = new otherClass(tsInt); 36 } 37}; 38export function createClassWithArgFromTs(arg) { 39 return new ParentClass(arg); 40}; 41export function createMainClassFromTs() { 42 return new ParentClass(MainClass); 43}; 44export let mainClassInstance = new ParentClass(MainClass); 45export function createAnonymousClassFromTs() { 46 return new ParentClass(AnonymousClass); 47}; 48export let anonymousClassInstance = new ParentClass(AnonymousClass); 49export function createIIFEClassFromTs() { 50 return new ParentClass(IIFEClass); 51}; 52export let iifeClassInstance = new ParentClass(IIFEClass); 53export class ChildClass extends ParentClass { 54 constructor(otherClass) { 55 super(otherClass); 56 } 57}; 58export function createChildClassWithArgFromTs(arg) { 59 return new ChildClass(arg); 60}; 61export function createChildClassWithMainFromTs() { 62 return new ChildClass(MainClass); 63}; 64export let childClassWithMainInstance = new ChildClass(MainClass); 65export function createChildClassWithAnonymousFromTs() { 66 return new ChildClass(MainClass); 67}; 68export let childClassWithAnonymousInstance = new ChildClass(MainClass); 69export function createChildClassWithIIFEFromTs() { 70 return new ChildClass(IIFEClass); 71}; 72export let childClassWithIIFEInstance = new ChildClass(IIFEClass); 73export let AnonymousClassCreateClass = class { 74 constructor(otherClass) { 75 this._otherClass = new otherClass(tsInt); 76 } 77}; 78export function createAnonymousClassCreateClassWithArgFromTs(arg) { 79 return new AnonymousClassCreateClass(arg); 80}; 81export function createAnonymousClassCreateClassFromTs() { 82 return new AnonymousClassCreateClass(MainClass); 83}; 84export function createAnonymousClassCreateIIFEClassFromTs() { 85 return new AnonymousClassCreateClass(IIFEClass); 86}; 87export let anonymousClassCreateMainInstance = new AnonymousClassCreateClass(MainClass); 88export let anonymousClassCreateIIFEInstance = new AnonymousClassCreateClass(IIFEClass); 89export let IIFECreateClassMain = (function (ctor, value) { 90 return new ctor(value); 91})(MainClass, tsInt); 92export let IIFECreateClassAnonymous = (function (ctor, value) { 93 return new ctor(value); 94})(AnonymousClass, tsInt); 95export let IIFECreateClass = (function (ctor, value) { 96 return new ctor(value); 97})(IIFEClass, tsInt); 98export class MethodClass { 99 init(anyClass, value) { 100 return new anyClass(value); 101 } 102}; 103export function CreateClassFunction(Arg, val) { 104 return new Arg(val); 105}; 106export function CreateClassArrowFunction(Arg, val) { 107 return new Arg(val); 108}; 109export function checkInstance(MainClass, instance) { 110 if (typeof MainClass !== 'function' || typeof instance !== 'object' || instance === null) { 111 throw new TypeError('must be a class'); 112 } 113 return instance instanceof MainClass; 114}; 115