diff --git a/mock-generate/src/generate/generateCommonUtil.ts b/mock-generate/src/generate/generateCommonUtil.ts index 8d933828390b3db76a0a65a3b90aeaf54de384f5..bdc2431c8f1d0f5892168e3023737b60177b7b61 100644 --- a/mock-generate/src/generate/generateCommonUtil.ts +++ b/mock-generate/src/generate/generateCommonUtil.ts @@ -346,3 +346,23 @@ export function generateSymbolIterator(methodEntity: MethodEntity): string { return iteratorMethod; } + +/** + * generate callback property + * @param kindName + * @returns + */ +export function getCallbackPropertyReturn(kindName: string): any { + const genericTypeName = kindName.split('<')[1].split('>')[0]; + if (genericTypeName === 'string') { + return `return ''`; + } else if (genericTypeName === 'number') { + return `return 0`; + } else if (genericTypeName === 'boolean') { + return `return true`; + } else if (genericTypeName === 'void') { + return ''; + } else { + return `return ${genericTypeName}`; + } +} \ No newline at end of file diff --git a/mock-generate/src/generate/generatePropertySignatureDeclaration.ts b/mock-generate/src/generate/generatePropertySignatureDeclaration.ts index c69fefbafdc2cc09caeeeca811f061424fca3118..85ce8bbfb6ca98d9153cc96cdc70a2a21acee0e0 100644 --- a/mock-generate/src/generate/generatePropertySignatureDeclaration.ts +++ b/mock-generate/src/generate/generatePropertySignatureDeclaration.ts @@ -17,7 +17,7 @@ import { SourceFile, SyntaxKind } from 'typescript'; import { PropertySignatureEntity } from '../declaration-node/propertySignatureDeclaration'; import { checkIsGenericSymbol, getCallbackStatement, getTheRealReferenceFromImport, - getWarnConsole, propertyTypeWhiteList + getWarnConsole, propertyTypeWhiteList, getCallbackPropertyReturn } from './generateCommonUtil'; /** @@ -46,15 +46,21 @@ export function generatePropertySignatureDeclaration(rootName: string, propertyS propertySignature.propertyTypeName === 'bool' || propertySignature.propertyTypeName === 'Data') { propertySignatureBody = `${propertySignature.propertyName}: '[PC Preview] unkonwn ${propertySignature.propertyName}',`; } else { - if (propertySignature.propertyTypeName.includes('<')) { - const preSplit = propertySignature.propertyTypeName.split('<'); - const genericArg = preSplit[preSplit.length - 1].split('>')[0]; - propertySignatureBody = `${propertySignature.propertyName}: ${genericArg},`; + if (propertySignature.propertyTypeName.includes('Callback') && propertySignature.propertyTypeName.includes('<') + && propertySignature.propertyTypeName.includes('>')) { + const retVal = getCallbackPropertyReturn(propertySignature.propertyTypeName); + propertySignatureBody = `${propertySignature.propertyName}: ()=>{ ${retVal} }`; } else { - if (propertyTypeWhiteList(propertySignature.propertyTypeName) === propertySignature.propertyTypeName) { - propertySignatureBody = `${propertySignature.propertyName}: ${getTheRealReferenceFromImport(sourceFile, propertySignature.propertyTypeName)},`; + if (propertySignature.propertyTypeName.includes('<')) { + const preSplit = propertySignature.propertyTypeName.split('<'); + const genericArg = preSplit[preSplit.length - 1].split('>')[0]; + propertySignatureBody = `${propertySignature.propertyName}: ${genericArg},`; } else { - propertySignatureBody = `${propertySignature.propertyName}: ${propertyTypeWhiteList(propertySignature.propertyTypeName)},`; + if (propertyTypeWhiteList(propertySignature.propertyTypeName) === propertySignature.propertyTypeName) { + propertySignatureBody = `${propertySignature.propertyName}: ${getTheRealReferenceFromImport(sourceFile, propertySignature.propertyTypeName)},`; + } else { + propertySignatureBody = `${propertySignature.propertyName}: ${propertyTypeWhiteList(propertySignature.propertyTypeName)},`; + } } } }