Skip to content

Commit d6e026b

Browse files
committed
feat: add generic type to setValue method
1 parent 2f6e5e5 commit d6e026b

File tree

2 files changed

+22
-12
lines changed

2 files changed

+22
-12
lines changed

src/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ class Field {
338338
* @param reRender - 设置完成后是否重新渲染,默认为 true
339339
* @param triggerChange - 是否触发 watch change,默认为 true
340340
*/
341-
setValue(name: string, value: unknown, reRender = true, triggerChange = true) {
341+
setValue<T = unknown>(name: string, value: T, reRender = true, triggerChange = true) {
342342
const oldValue = this.getValue(name);
343343
if (name in this.fieldsMeta) {
344344
this.fieldsMeta[name].value = value;

test/index.spec.tsx

+21-11
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
1-
import React, { useState, useMemo, Component, RefObject, createRef, forwardRef, useImperativeHandle } from 'react';
1+
import React, {
2+
useState,
3+
useMemo,
4+
Component,
5+
type RefObject,
6+
createRef,
7+
forwardRef,
8+
useImperativeHandle,
9+
PureComponent,
10+
isValidElement,
11+
} from 'react';
212
import { Input, Form } from '@alifd/next';
313
import Field from '../src';
414

@@ -28,7 +38,7 @@ describe('field', () => {
2838

2939
describe('render', () => {
3040
it('should support Form', () => {
31-
class Demo extends React.Component {
41+
class Demo extends Component {
3242
field = new Field(this);
3343

3444
render() {
@@ -77,11 +87,11 @@ describe('field', () => {
7787
});
7888

7989
it('should support React.createRef in Form', () => {
80-
class Demo extends React.Component<{
90+
class Demo extends Component<{
8191
onClick: (ref: RefObject<any>) => void;
8292
}> {
8393
field = new Field(this);
84-
ref = React.createRef<any>();
94+
ref = createRef<any>();
8595
render() {
8696
return (
8797
<Form field={this.field}>
@@ -109,7 +119,7 @@ describe('field', () => {
109119
});
110120

111121
it('should support PureComponent', () => {
112-
class Demo extends React.PureComponent {
122+
class Demo extends PureComponent {
113123
field = new Field(this, { forceUpdate: true });
114124

115125
render() {
@@ -127,7 +137,7 @@ describe('field', () => {
127137
});
128138

129139
it('should support origin input/checkbox/radio', () => {
130-
class Demo extends React.Component {
140+
class Demo extends Component {
131141
field = new Field(this);
132142

133143
render() {
@@ -341,7 +351,7 @@ describe('field', () => {
341351
});
342352

343353
it('should support control through `setState`', () => {
344-
class Demo extends React.Component {
354+
class Demo extends Component {
345355
state = {
346356
show: true,
347357
inputValue: 'start',
@@ -370,7 +380,7 @@ describe('field', () => {
370380
});
371381

372382
it('should support control through `setState` when `parseName` is true', () => {
373-
class Demo extends React.Component {
383+
class Demo extends Component {
374384
state = {
375385
show: true,
376386
inputValue: 'start',
@@ -434,14 +444,14 @@ describe('field', () => {
434444
});
435445
});
436446

437-
describe('behaviour', () => {
447+
describe('behavior', () => {
438448
it('getValue & getValues & setValue & setValues', () => {
439449
const field = new Field({});
440450
field.init('input', { initValue: 1 });
441451
field.init('input2', { initValue: 2 });
442452
field.init('input3.name', { initValue: 3 });
443453

444-
field.setValue('input', 2);
454+
field.setValue<number>('input', 2);
445455
assert(field.getValue('input') === 2);
446456
assert(field.getValue('input3.name') === 3);
447457
assert(Object.keys(field.getValues()).length === 3);
@@ -524,7 +534,7 @@ describe('field', () => {
524534
assert(field.getError('input2')?.[0] === 'error 2');
525535

526536
field.setError('input', <span>hello</span>);
527-
assert(React.isValidElement(field.getError('input')?.[0]) === true);
537+
assert(isValidElement(field.getError('input')?.[0]) === true);
528538
});
529539
it('getState', () => {
530540
const field = new Field({});

0 commit comments

Comments
 (0)