33 lines
947 B
TypeScript
33 lines
947 B
TypeScript
import 'reflect-metadata'
|
|
import { reflect } from 'typescript-rtti'
|
|
|
|
// function with inline object type argument
|
|
|
|
function mangle(deps: {
|
|
factor: number,
|
|
label: string
|
|
}) {
|
|
return (a: number) => deps.label + (deps.factor*a)
|
|
}
|
|
|
|
console.log('Mangling', mangle({factor: 2, label: 'doubled: '})(7))
|
|
let mdeptype = reflect(mangle).getParameter('deps').type
|
|
console.log("Deps type:", mdeptype)
|
|
console.log(" Readable:", mdeptype.toString())
|
|
|
|
// Above seems to work. However, if the object has a function member,
|
|
// it seems to lose the type of that member:
|
|
|
|
function bungle(deps: {
|
|
factor: (i: number) => number,
|
|
label: string
|
|
}) {
|
|
return (a: number) => deps.label + (deps.factor(2)*a)
|
|
}
|
|
|
|
let fn = (i:number) => 3*i
|
|
console.log("\nBungling", bungle({factor: fn, label:'hextupled: '})(7))
|
|
let bdeptype = reflect(bungle).getParameter('deps').type
|
|
console.log("Deps type:", bdeptype)
|
|
console.log(" Readable:", bdeptype.toString())
|