typocomath/src/isolate_bug.ts

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())