i’m having troublue with vscode, since it wont give me suggestions on typing “.” after a property (that is of type class or object)
based on a vue3-project (but shouldn’t matter i think) i have the following:
<code>import lwFunctionsStatic from "./../core/util/lwFunctionsStatic" // doesn't work
import type { testT } from "./../core/util/lwFunctionsStatic" // doesn't work
import { test } from "./../core/util/lwFunctionsStatic" // doesn't work
import type { lwFunctionsStaticT } from "./../core/util/lwFunctionsStatic" // doesn't work
import { lwFunctionsStaticI } from "./../core/util/lwFunctionsStatic" // doesn't work
// interface lwFunctionsStaticI extends lwFunctionsStaticT { }; // doesn't work
import { lwFilter } from "./lwFilter"
interface ComponentCustomProperties {
$filter: lwFilter, // works
<code>import lwFunctionsStatic from "./../core/util/lwFunctionsStatic" // doesn't work
import type { testT } from "./../core/util/lwFunctionsStatic" // doesn't work
import { test } from "./../core/util/lwFunctionsStatic" // doesn't work
import type { lwFunctionsStaticT } from "./../core/util/lwFunctionsStatic" // doesn't work
import { lwFunctionsStaticI } from "./../core/util/lwFunctionsStatic" // doesn't work
// interface lwFunctionsStaticI extends lwFunctionsStaticT { }; // doesn't work
import { lwFilter } from "./lwFilter"
declare module 'vue' {
interface ComponentCustomProperties {
$lwFunctions: test,
$filter: lwFilter, // works
}
</code>
import lwFunctionsStatic from "./../core/util/lwFunctionsStatic" // doesn't work
import type { testT } from "./../core/util/lwFunctionsStatic" // doesn't work
import { test } from "./../core/util/lwFunctionsStatic" // doesn't work
import type { lwFunctionsStaticT } from "./../core/util/lwFunctionsStatic" // doesn't work
import { lwFunctionsStaticI } from "./../core/util/lwFunctionsStatic" // doesn't work
// interface lwFunctionsStaticI extends lwFunctionsStaticT { }; // doesn't work
import { lwFilter } from "./lwFilter"
declare module 'vue' {
interface ComponentCustomProperties {
$lwFunctions: test,
$filter: lwFilter, // works
}
lwfilter for exmaple is an interface, and that works:
<code>export interface lwFilter {
capitalize: (value: String) => String,
capitalizeEachWord: (value: string, splitReg?: String, joinChar?: String) => String,
<code>export interface lwFilter {
capitalize: (value: String) => String,
capitalizeEachWord: (value: string, splitReg?: String, joinChar?: String) => String,
//...
}
</code>
export interface lwFilter {
capitalize: (value: String) => String,
capitalizeEachWord: (value: string, splitReg?: String, joinChar?: String) => String,
//...
}
but everything i tried so far with lwFunctionsStatic did not work. For me its not relevant if its a class or just an object, since its just a collection of properties and functions, i just need intellisense to work:
lwfunctionsStatic:
<code>class lwFunctionsStatic {
constructor(options: any, appInstallEvent: any, Printd: any) {
lwFunctionsStatic.appInstallEvent = appInstallEvent;
if (options && options.store) lwFunctionsStatic.store = options.store;
if (Printd) lwFunctionsStatic.printd = Printd;
public static appInstallEvent = null;
public static store = null;
public static printd = null;
public static promptFileFromClient = (accept: string): Promise<{ name: string, type: string, size: number, data: string | ArrayBuffer | null }> => {
return new Promise((resolve) => {
// .... many more props and functions
export default lwFunctionsStatic;
type InterfaceOf<ClassType> = {
[Member in keyof ClassType]: ClassType[Member];
export type lwFunctionsStaticT = InterfaceOf<lwFunctionsStatic>;
export interface lwFunctionsStaticI extends lwFunctionsStatic { };
export type testT = InterfaceOf<typeof test>;
<code>class lwFunctionsStatic {
constructor(options: any, appInstallEvent: any, Printd: any) {
lwFunctionsStatic.appInstallEvent = appInstallEvent;
if (options && options.store) lwFunctionsStatic.store = options.store;
if (Printd) lwFunctionsStatic.printd = Printd;
}
public static appInstallEvent = null;
public static store = null;
public static printd = null;
public static promptFileFromClient = (accept: string): Promise<{ name: string, type: string, size: number, data: string | ArrayBuffer | null }> => {
return new Promise((resolve) => {
//.. some code
});
};
// .... many more props and functions
}
export default lwFunctionsStatic;
type InterfaceOf<ClassType> = {
[Member in keyof ClassType]: ClassType[Member];
};
export type lwFunctionsStaticT = InterfaceOf<lwFunctionsStatic>;
export interface lwFunctionsStaticI extends lwFunctionsStatic { };
export const test = {
prop1: "test" as string,
};
export type testT = InterfaceOf<typeof test>;
</code>
class lwFunctionsStatic {
constructor(options: any, appInstallEvent: any, Printd: any) {
lwFunctionsStatic.appInstallEvent = appInstallEvent;
if (options && options.store) lwFunctionsStatic.store = options.store;
if (Printd) lwFunctionsStatic.printd = Printd;
}
public static appInstallEvent = null;
public static store = null;
public static printd = null;
public static promptFileFromClient = (accept: string): Promise<{ name: string, type: string, size: number, data: string | ArrayBuffer | null }> => {
return new Promise((resolve) => {
//.. some code
});
};
// .... many more props and functions
}
export default lwFunctionsStatic;
type InterfaceOf<ClassType> = {
[Member in keyof ClassType]: ClassType[Member];
};
export type lwFunctionsStaticT = InterfaceOf<lwFunctionsStatic>;
export interface lwFunctionsStaticI extends lwFunctionsStatic { };
export const test = {
prop1: "test" as string,
};
export type testT = InterfaceOf<typeof test>;
now what i want is if i type for example this.$lwFunctions.
vscode should suggest store
, promptFileFromClient
and so on, but it doesn’t 🙁
(this is working for this.$filter.
)
Important: I don’t want to write an explict interface for this (yes with an interface it works, but i would like to avoid “duplicated” code)
does anybode know how to make it work?