Browse Source

support use typescript

pull/2650/head
陈帅 8 years ago
parent
commit
deb14330ad
  1. 5
      package.json
  2. 13
      src/components/Authorized/AuthorizedRoute.d.ts
  3. 35
      src/components/Authorized/index.d.ts
  4. 2
      src/components/Charts/ChartCard/index.d.ts
  5. 11
      src/components/Login/LoginItem.d.ts
  6. 7
      src/components/Login/Tab.d.ts
  7. 38
      src/components/Login/index.d.ts
  8. 4
      src/components/PageHeader/breadcrumb.d.ts
  9. 35
      tsconfig.json
  10. 11
      tslint.json

5
package.json

@ -15,6 +15,8 @@
"lint:fix": "eslint --fix --ext .js src mock tests && npm run lint:style",
"lint-staged": "lint-staged",
"lint-staged:js": "eslint --ext .js",
"tslint": "npm run tslint:fix",
"tslint:fix": "tslint --fix 'src/**/*.ts*'",
"test": "umi test",
"test:component": "umi test ./src/components",
"test:all": "node ./tests/run-tests.js",
@ -71,6 +73,9 @@
"eslint-plugin-jsx-a11y": "^6.1.2",
"eslint-plugin-markdown": "^1.0.0-beta.6",
"eslint-plugin-react": "^7.11.1",
"tslint": "^5.10.0",
"tslint-config-prettier": "^1.10.0",
"tslint-react": "^3.6.0",
"gh-pages": "^2.0.1",
"husky": "^1.1.2",
"lint-staged": "^7.2.0",

13
src/components/Authorized/AuthorizedRoute.d.ts

@ -0,0 +1,13 @@
import * as React from 'react';
import { RouteProps } from 'react-router';
type authorityFN = (currentAuthority?: string) => boolean;
type authority = string | string[] | authorityFN | Promise<any>;
export interface IAuthorizedRouteProps extends RouteProps {
authority: authority;
}
export { authority };
export class AuthorizedRoute extends React.Component<IAuthorizedRouteProps, any> {}

35
src/components/Authorized/index.d.ts

@ -1,41 +1,30 @@
import * as React from 'react';
import { RouteProps } from 'react-router';
type authorityFN = (currentAuthority?: string) => boolean;
type authority = string | Array<string> | authorityFN | Promise<any>;
import AuthorizedRoute, { authority } from './AuthorizedRoute';
export type IReactComponent<P = any> =
| React.StatelessComponent<P>
| React.ComponentClass<P>
| React.ClassicComponentClass<P>;
interface Secured {
(authority: authority, error?: React.ReactNode): <T extends IReactComponent>(target: T) => T;
}
export interface AuthorizedRouteProps extends RouteProps {
authority: authority;
}
export class AuthorizedRoute extends React.Component<AuthorizedRouteProps, any> {}
type Secured = (
authority: authority,
error?: React.ReactNode
) => <T extends IReactComponent>(target: T) => T;
interface check {
<T extends IReactComponent, S extends IReactComponent>(
type check = <T extends IReactComponent, S extends IReactComponent>(
authority: authority,
target: T,
Exception: S
): T | S;
}
) => T | S;
export interface AuthorizedProps {
export interface IAuthorizedProps {
authority: authority;
noMatch?: React.ReactNode;
}
export class Authorized extends React.Component<AuthorizedProps, any> {
static Secured: Secured;
static AuthorizedRoute: typeof AuthorizedRoute;
static check: check;
export class Authorized extends React.Component<IAuthorizedProps, any> {
public static Secured: Secured;
public static AuthorizedRoute: typeof AuthorizedRoute;
public static check: check;
}
declare function renderAuthorize(currentAuthority: string): typeof Authorized;

2
src/components/Charts/ChartCard/index.d.ts

@ -1,5 +1,5 @@
import * as React from 'react';
import { CardProps } from 'antd/lib/card';
import * as React from 'react';
export interface IChartCardProps extends CardProps {
title: React.ReactNode;

11
src/components/Login/LoginItem.d.ts

@ -0,0 +1,11 @@
import * as React from 'react';
export interface ILoginItemProps {
name?: string;
rules?: any[];
style?: React.CSSProperties;
onGetCaptcha?: () => void;
placeholder?: string;
buttonText?: React.ReactNode;
}
export class LoginItem extends React.Component<ILoginItemProps, any> {}

7
src/components/Login/Tab.d.ts

@ -0,0 +1,7 @@
import * as React from 'react';
export interface ILoginTabProps {
key?: string;
tab?: React.ReactNode;
}
export default class LoginTab extends React.Component<ILoginTabProps, any> {}

38
src/components/Login/index.d.ts

@ -1,34 +1,20 @@
import * as React from 'react';
import Button from 'antd/lib/button';
export interface LoginProps {
import * as React from 'react';
import LoginItem from './LoginItem';
import LoginTab from './LoginTab';
export interface ILoginProps {
defaultActiveKey?: string;
onTabChange?: (key: string) => void;
style?: React.CSSProperties;
onSubmit?: (error: any, values: any) => void;
}
export interface TabProps {
key?: string;
tab?: React.ReactNode;
}
export class Tab extends React.Component<TabProps, any> {}
export interface LoginItemProps {
name?: string;
rules?: any[];
style?: React.CSSProperties;
onGetCaptcha?: () => void;
placeholder?: string;
buttonText?: React.ReactNode;
}
export class LoginItem extends React.Component<LoginItemProps, any> {}
export default class Login extends React.Component<LoginProps, any> {
static Tab: typeof Tab;
static UserName: typeof LoginItem;
static Password: typeof LoginItem;
static Mobile: typeof LoginItem;
static Captcha: typeof LoginItem;
static Submit: typeof Button;
export default class Login extends React.Component<ILoginProps, any> {
public static Tab: typeof LoginTab;
public static UserName: typeof LoginItem;
public static Password: typeof LoginItem;
public static Mobile: typeof LoginItem;
public static Captcha: typeof LoginItem;
public static Submit: typeof Button;
}

4
src/components/PageHeader/breadcrumb.d.ts

@ -1,6 +1,6 @@
import * as React from 'react';
import { IPageHeaderProps } from './index'
import { IPageHeaderProps } from './index';
export default class BreadcrumbView extends React.Component<IPageHeaderProps, any> {}
export function getBreadcrumb(breadcrumbNameMap: Object, url: string): Object;
export function getBreadcrumb(breadcrumbNameMap: object, url: string): object;

35
tsconfig.json

@ -0,0 +1,35 @@
{
"compilerOptions": {
"outDir": "build/dist",
"module": "esnext",
"target": "es2016",
"lib": ["es6", "dom"],
"sourceMap": true,
"baseUrl": ".",
"jsx": "react",
"allowSyntheticDefaultImports": true,
"moduleResolution": "node",
"rootDirs": ["/src", "/test", "/mock","./typings"],
"forceConsistentCasingInFileNames": true,
"noImplicitReturns": true,
"suppressImplicitAnyIndexErrors": true,
"noUnusedLocals": true,
"allowJs": true,
"experimentalDecorators": true,
"paths": {
"@/*": ["./src/*"]
}
},
"include": ["./src"],
"exclude": [
"node_modules",
"build",
"scripts",
"acceptance-tests",
"webpack",
"jest",
"src/setupTests.ts",
"tslint:latest",
"tslint-config-prettier"
]
}

11
tslint.json

@ -0,0 +1,11 @@
{
"extends": ["tslint:latest", "tslint-react", "tslint-config-prettier"],
"rules": {
"no-var-requires": false,
"no-submodule-imports": false,
"object-literal-sort-keys": false,
"jsx-no-lambda": false,
"no-implicit-dependencies": false,
"no-console": false
}
}
Loading…
Cancel
Save