本文整理匯總了TypeScript中@tsed/core.Metadata.getParamTypes方法的典型用法代碼示例。如果您正苦於以下問題:TypeScript Metadata.getParamTypes方法的具體用法?TypeScript Metadata.getParamTypes怎麽用?TypeScript Metadata.getParamTypes使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類@tsed/core.Metadata
的用法示例。
在下文中一共展示了Metadata.getParamTypes方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: return
return (target: any, propertyKey: string, index: number) => {
const store = Store.from(target);
const type = Metadata.getParamTypes(target, propertyKey)[index];
const param = {
filter: SocketFilters.ARGS,
useConverter: false
};
if (mapIndex !== undefined) {
Object.assign(param, {
mapIndex,
useConverter: true,
type: useType || type,
collectionType: isCollection(type) ? type : undefined
});
}
return store.merge("socketIO", {
handlers: {
[propertyKey]: {
parameters: {
[index]: param
}
}
}
});
};
示例2: return
return (target: any, propertyKey: string, descriptor: TypedPropertyDescriptor<Function> | number): any => {
const bindingType = getDecoratorType([target, propertyKey, descriptor], true);
switch (bindingType) {
case "parameter":
case "parameter.constructor":
if (symbol) {
const paramTypes = Metadata.getParamTypes(target, propertyKey);
paramTypes[descriptor as number] = symbol;
Metadata.setParamTypes(target, propertyKey, paramTypes);
}
break;
case "property":
Store.from(target).merge("injectableProperties", {
[propertyKey]: {
bindingType,
propertyKey,
useType: symbol || Metadata.getType(target, propertyKey)
}
});
break;
case "method":
Store.from(target).merge("injectableProperties", {
[propertyKey]: {
bindingType,
propertyKey
}
});
return descriptor;
default:
throw new UnsupportedDecoratorType(Inject, [target, propertyKey, descriptor]);
}
};
示例3: return
return (target: any, propertyKey: string, parameterIndex: number): void => {
const type = getDecoratorType([target, propertyKey, parameterIndex], true);
switch (type) {
default:
throw new Error("MultipartFile is only supported on parameters");
case "parameter":
const store = Store.fromMethod(target, propertyKey);
const multiple = Metadata.getParamTypes(target, propertyKey)[parameterIndex] === Array;
const options = typeof name === "object" ? name : undefined;
const added = store.has("multipartAdded");
name = (typeof name === "object" ? undefined : name)!;
// create endpoint metadata
store.merge("consumes", ["multipart/form-data"]).set("multipartAdded", true);
store
.merge("responses", {
"400": {
description: `<File too long | Too many parts | Too many files | Field name too long | Field value too long | Too many fields | Unexpected field> [fieldName]
Example: File too long file1`
}
})
.set("multipartAdded", true);
if (!added) {
// middleware is added
UseBefore(MultipartFileMiddleware)(target, propertyKey, descriptorOf(target, propertyKey));
}
if (name === undefined) {
store.merge(MultipartFileMiddleware, {
options,
any: true
});
ParamRegistry.useFilter(multiple ? MultipartFilesFilter : MultipartFileFilter, {
propertyKey,
parameterIndex,
target,
useConverter: false,
paramType: ParamTypes.FORM_DATA
});
} else {
const expression = multiple ? (name as string) : name + ".0";
store.merge(MultipartFileMiddleware, {
fields: [
{
name,
maxCount
}
],
options
});
ParamRegistry.useFilter(MultipartFilesFilter, {
expression,
propertyKey,
parameterIndex,
target,
useConverter: false,
paramType: ParamTypes.FORM_DATA
});
}
break;
}
};