Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ts: Migrate vdom.js to TypeScript #26272

Merged
merged 1 commit into from
Jul 24, 2023
Merged

ts: Migrate vdom.js to TypeScript #26272

merged 1 commit into from
Jul 24, 2023

Conversation

jychen630
Copy link
Collaborator

@jychen630 jychen630 commented Jul 17, 2023

Added type annotations for variables, function params, and return values. Created custom types that help with clean type annotations.

Notes on attrs field in custom Option type:
attrs is an Iterable where each element is a pair of string, i.e a string array with two elements. attrs is tranformed into a Map at some point. Map constructor takes in Iterable object so has no problem unifying with attrs. However, at some point attrs is transfomed using .map(...) which is an array method, and Iterable does not support .map(...). So at this point, I cast attrs into array before using .map(...) by this syntax:
[..attrs].map(...)

Much inference is inspired by vdom.test.js.

Self-review checklist
  • Self-reviewed the changes for clarity and maintainability
    (variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

  • Explains differences from previous plans (e.g., issue description).
  • Highlights technical choices and bugs encountered.
  • Calls out remaining decisions and concerns.
  • Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

  • Each commit is a coherent idea.
  • Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

  • Visual appearance of the changes.
  • Responsiveness and internationalization.
  • Strings and tooltips.
  • End-to-end functionality of buttons, interactions and flows.
  • Corner cases, error conditions, and easily imagined bugs.

@zulipbot zulipbot added buddy review GSoC buddy review needed. mentor review GSoC mentor review needed. labels Jul 17, 2023
web/src/vdom.ts Outdated Show resolved Hide resolved
@@ -2,7 +2,26 @@ import _ from "lodash";

import * as blueslip from "./blueslip";

export function eq_array(a, b, eq) {
type Equal<T> = (...args: T[]) => boolean;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

eq for Node takes 1 argument, eq for eq_array takes 2 arguments. Let's type them separately to be more precise.

web/src/vdom.ts Outdated Show resolved Hide resolved
Added type annotations for variables, function params, and return
values. Created custom types that help with clean type annotations.

Notes on `attrs` field in custom `Option` type:
 `attrs` is an `Iterable` where each element is a pair of string, i.e
a string array with two elements. `attrs` is tranformed into a `Map`
at some point. `Map` constructor takes in `Iterable` object so has
no problem unifying with `attrs`. However, at some point `attrs` is
transfomed using `.map(...)` which is an array method, and `Iterable`
does not support `.map(...)`. So at this point, I cast `attrs` into
array before using `.map(...)` by this syntax:
`[..attrs].map(...)`
@PIG208
Copy link
Member

PIG208 commented Jul 24, 2023

@zulipbot add "integration review"
@zulipbot remove "mentor review" "buddy review"
LGTM!

@zulipbot zulipbot added integration review Added by maintainers when a PR may be ready for integration. and removed buddy review GSoC buddy review needed. mentor review GSoC mentor review needed. labels Jul 24, 2023
@timabbott timabbott merged commit 30c535f into zulip:main Jul 24, 2023
8 checks passed
@timabbott
Copy link
Sponsor Member

Merged, thanks @jychen630 and @PIG208!

@jychen630 jychen630 deleted the vdom branch July 24, 2023 23:50
@andersk andersk added the area: typescript migration Issues for migrating Zulip to TypeScript label Oct 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: typescript migration Issues for migrating Zulip to TypeScript integration review Added by maintainers when a PR may be ready for integration. size: M
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants