types: improve typing (#309)

This commit is contained in:
xiaoboost 2019-10-16 22:31:40 +08:00 committed by Evan You
parent b54c05f751
commit 32499b16e7
4 changed files with 9 additions and 7 deletions

View File

@ -17,7 +17,7 @@ const bracketsRE = /^\[|\]$/g
// e.g.
// - createObjectMatcher({ 'foo': '[bar]' }) matches { foo: bar }
// - createObjectMatcher({ '[foo]': 'bar' }) matches { [foo]: "bar" }
export function createObjectMatcher(obj: any) {
export function createObjectMatcher(obj: Record<string, any>) {
return {
type: NodeTypes.JS_OBJECT_EXPRESSION,
properties: Object.keys(obj).map(key => ({

View File

@ -23,7 +23,7 @@
interface HTMLAttributes {
class?: any
style?: string | { [key: string]: string | number }
style?: string | Partial<CSSStyleDeclaration>
accesskey?: string
contenteditable?: boolean
contextmenu?: string

View File

@ -1,14 +1,16 @@
import { isString } from '@vue/shared'
export function patchStyle(el: any, prev: any, next: any) {
const { style } = el
type Style = string | Partial<CSSStyleDeclaration> | null
export function patchStyle(el: Element, prev: Style, next: Style) {
const style = (el as HTMLElement).style
if (!next) {
el.removeAttribute('style')
} else if (isString(next)) {
style.cssText = next
} else {
for (const key in next) {
style[key] = next[key]
style[key] = next[key] as string
}
if (prev && !isString(prev)) {
for (const key in prev) {

View File

@ -213,12 +213,12 @@ function debounce<T extends (...args: any[]) => any>(
fn: T,
delay: number = 300
): T {
let prevTimer: NodeJS.Timeout | null = null
let prevTimer: number | null = null
return ((...args: any[]) => {
if (prevTimer) {
clearTimeout(prevTimer)
}
prevTimer = setTimeout(() => {
prevTimer = window.setTimeout(() => {
fn(...args)
prevTimer = null
}, delay)