Description
👟 Reproduction steps
When using an IDE/editor supporting autocompletion with the Typescript Language Server, such as VS Code.
Calling Databases.createDocument
with a type parameter:
interface ProjectModel extends Models.Document {
name: string;
whatever: number;
}
/* ... */
const project = await databases.createDocument<ProjectModel>(
databaseId,
collectionId,
ID.unique(),
{
name: "my project",
},
});
👍 Expected behavior
I should see the properties I defined in the ProjectModel
interface when VS Code autocompletes the code inside the curly brackets.
👎 Actual Behavior
VS Code shows identifiers from the function scope, but not the properties defined in the ProjectModel
interface:
Possible solution
I think this is caused by the data
argument of Databases.createDocument
having the type Omit<Document, keyof Models.Document>
.
Since Models.Document
contains a string index signature, the value of keyof Models.Document
is probably string | number
. That would remove all properties from the Document
type parameter, basically turning it into an empty object type ({}
).
🎲 Appwrite version
Different version (specify in environment)
💻 Operating system
MacOS
🧱 Your Environment
Appwrite Cloud
Appwrite web SDK version:
13.0.0
VS Code version information:
Version: 1.82.2 (Universal)
Commit: abd2f3db4bdb28f9e95536dfa84d8479f1eb312d
Date: 2023-09-14T05:59:47.790Z (2 wks ago)
Electron: 25.8.1
ElectronBuildId: 23779380
Chromium: 114.0.5735.289
Node.js: 18.15.0
V8: 11.4.183.29-electron.0
OS: Darwin arm64 22.5.0
MacOS version:
13.4.1 (22F82)
👀 Have you spent some time to check if this issue has been raised before?
- I checked and didn't find similar issue
🏢 Have you read the Code of Conduct?
- I have read the Code of Conduct