Diff
checker
テキスト
テキスト
画像
ドキュメント
Excel
フォルダ
Legal
Enterprise
デスクトップ
料金
ログイン
Diffchecker デスクトップのダウンロード
テキスト比較
2 つのテキスト ファイルの違いを見つける
ツール
履歴
ライブエディター
未変更行を折りたたむ
折り返しなし
レイアウト
分割
統合
比較精度
スマート
単語
文字
シンタックスハイライト
構文を選択
無視
テキスト変換
最初の差分へ移動
入力を編集
Diffchecker Desktop
Diffcheckerを実行する最も安全な方法。Diffchecker Desktopアプリを入手:あなたの差分はコンピューターから出ることはありません!
Desktopを入手
vscode插件i18n-automatically扫描前后ts的对比图
作成日
2 年前
差分は期限切れになりません
クリア
エクスポート
共有
説明
10 削除
行
合計
削除
文字
合計
削除
この機能を引き続き使用するには、アップグレードしてください
Diff
checker
Pro
価格を見る
186 行
すべてコピー
46 追加
行
合計
追加
文字
合計
追加
この機能を引き続き使用するには、アップグレードしてください
Diff
checker
Pro
価格を見る
209 行
すべてコピー
コピー
コピー済み
コピー
コピー済み
// test.ts
import i18n from '@/i18n';
// test.ts
import { translate } from './i18n-helper';
import { translate } from './i18n-helper';
import { ApiClient } from './api-client';
import { ApiClient } from './api-client';
// Type definitions
// Type definitions
type UserRole = 'admin' | 'editor' | 'guest';
type UserRole = 'admin' | 'editor' | 'guest';
interface User {
interface User {
id: number;
id: number;
name: string;
name: string;
age: number;
age: number;
role: UserRole;
role: UserRole;
lastLogin?: Date;
lastLogin?: Date;
}
}
// Enum with Chinese keys (as requested to keep)
// Enum with Chinese keys (as requested to keep)
enum StatusCode {
enum StatusCode {
'成功' = 200,
'成功' = 200,
'未授权' = 401,
'未授权' = 401,
'禁止访问' = 403,
'禁止访问' = 403,
'未找到' = 404,
'未找到' = 404,
'服务器错误' = 500,
'服务器错误' = 500,
}
}
// Constants with Chinese keys
// Constants with Chinese keys
const ErrorMessages = {
const ErrorMessages = {
用户未找到: 'User not found',
用户未找到: 'User not found',
无效凭证: 'Invalid credentials',
无效凭证: 'Invalid credentials',
操作未授权: 'Unauthorized operation',
操作未授权: 'Unauthorized operation',
服务暂时不可用: 'Service temporarily unavailable',
服务暂时不可用: 'Service temporarily unavailable',
};
};
// Class
// Class
class UserManager {
class UserManager {
private users: User[] = [];
private users: User[] = [];
constructor(initialUsers: User[] = []) {
constructor(initialUsers: User[] = []) {
this.users = initialUsers;
this.users = initialUsers;
console.log('用户管理系统已初始化'); // StringLiteral in console.log
console.log('用户管理系统已初始化'); // StringLiteral in console.log
}
}
addUser(user: User): void {
addUser(user: User): void {
this.users.push(user);
this.users.push(user);
console.log(`新用户 ${user.name} 已添加`); // Template literal in console.log
console.log(`新用户 ${user.name} 已添加`); // Template literal in console.log
}
}
getUser(id: number): User | undefined {
getUser(id: number): User | undefined {
return this.users.find((user) => user.id === id);
return this.users.find((user) => user.id === id);
}
}
updateUser(id: number, updateInfo: Partial<User>): void {
updateUser(id: number, updateInfo: Partial<User>): void {
const index = this.users.findIndex((user) => user.id === id);
const index = this.users.findIndex((user) => user.id === id);
if (index !== -1) {
if (index !== -1) {
this.users[index] = { ...this.users[index], ...updateInfo };
this.users[index] = { ...this.users[index], ...updateInfo };
console.log(`用户 ${id} 信息已更新`); // Template literal in console.log
console.log(`用户 ${id} 信息已更新`); // Template literal in console.log
} else {
} else {
console.error(translate(ErrorMessages.用户未找到));
console.error(translate(ErrorMessages.用户未找到));
}
}
}
}
deleteUser(id: number): void {
deleteUser(id: number): void {
const index = this.users.findIndex((user) => user.id === id);
const index = this.users.findIndex((user) => user.id === id);
if (index !== -1) {
if (index !== -1) {
this.users.splice(index, 1);
this.users.splice(index, 1);
console.log(`用户 ${id} 已删除`); // Template literal in console.log
console.log(`用户 ${id} 已删除`); // Template literal in console.log
} else {
} else {
console.error(translate(ErrorMessages.用户未找到));
console.error(translate(ErrorMessages.用户未找到));
}
}
}
}
listAllUsers(): void {
listAllUsers(): void {
console.log('所有用户:'); // StringLiteral in console.log
console.log('所有用户:'); // StringLiteral in console.log
this.users.forEach((user) => {
this.users.forEach((user) => {
console.log(
console.log(
`ID: ${user.id}, 姓名: ${user.name}, 年龄: ${user.age}, 角色: ${user.role}`,
`ID: ${user.id}, 姓名: ${user.name}, 年龄: ${user.age}, 角色: ${user.role}`,
); // Template literal in console.log
); // Template literal in console.log
});
});
}
}
}
}
// Generic function
// Generic function
function createAndLog<T>(item: T, logMessage: string): T {
function createAndLog<T>(item: T, logMessage: string): T {
console.log(logMessage, item);
console.log(logMessage, item);
return item;
return item;
}
}
// Async function
// Async function
async function fetchRemoteUserData(userId: number): Promise<User> {
async function fetchRemoteUserData(userId: number): Promise<User> {
const apiClient = new ApiClient('https://api.example.com');
const apiClient = new ApiClient('https://api.example.com');
try {
try {
const response = await apiClient.get(`/users/${userId}`);
const response = await apiClient.get(`/users/${userId}`);
if (response.status === StatusCode.成功) {
if (response.status === StatusCode.成功) {
return response.data as User;
return response.data as User;
} else {
} else {
throw new Error(`获取用户数据失败: ${response.statusText}`); // Template literal in Error message
throw new Error(`获取用户数据失败: ${response.statusText}`); // Template literal in Error message
}
}
} catch (error) {
} catch (error) {
console.error('API调用错误:', error); // StringLiteral in console.error
console.error('API调用错误:', error); // StringLiteral in console.error
throw error;
throw error;
}
}
}
}
// Decorator
// Decorator
function logMethod(
function logMethod(
target: any,
target: any,
propertyKey: string,
propertyKey: string,
descriptor: PropertyDescriptor,
descriptor: PropertyDescriptor,
) {
) {
const originalMethod = descriptor.value;
const originalMethod = descriptor.value;
descriptor.value = function (...args: any[]) {
descriptor.value = function (...args: any[]) {
console.log(`调用方法 ${propertyKey},参数:`, args); // Template literal in console.log
console.log(`调用方法 ${propertyKey},参数:`, args); // Template literal in console.log
const result = originalMethod.apply(this, args);
const result = originalMethod.apply(this, args);
console.log(`方法 ${propertyKey} 执行完成,结果:`, result); // Template literal in console.log
console.log(`方法 ${propertyKey} 执行完成,结果:`, result); // Template literal in console.log
return result;
return result;
};
};
return descriptor;
return descriptor;
}
}
// Class using decorator
// Class using decorator
class AdvancedUserManager extends UserManager {
class AdvancedUserManager extends UserManager {
@logMethod
@logMethod
performAdvancedOperation(operation: string): string {
performAdvancedOperation(operation: string): string {
コピー
コピー済み
コピー
コピー済み
return `
执行高级操作:
${operation}`; // Template literal
return `
${i18n.t('demoTest-test-ts-before-19299188809a0b65e-6')}
${operation}`; // Template literal
}
}
}
}
// Usage example
// Usage example
const userSystem = new AdvancedUserManager([
const userSystem = new AdvancedUserManager([
コピー
コピー済み
コピー
コピー済み
{
id: 1,
name:
'张三',
age: 30,
role: 'admin'
},
{
{
id: 2,
name:
'李四',
age: 25,
role: 'editor'
},
id: 1,
name:
i18n.t('demoTest-test-ts-before-19299188809a0b65e-7'),
age: 30,
role: 'admin'
,
},
{
id: 2,
name:
i18n.t('demoTest-test-ts-before-19299188809a0b65e-8'),
age: 25,
role: 'editor'
,
},
]);
]);
userSystem.listAllUsers();
userSystem.listAllUsers();
const newUser = createAndLog<User>(
const newUser = createAndLog<User>(
コピー
コピー済み
コピー
コピー済み
{
id: 3,
name:
'王五',
age: 28,
role: 'guest'
},
{
'创建新用户:',
// StringLiteral
id: 3,
name:
i18n.t('demoTest-test-ts-before-19299188809a0b65e-9'),
age: 28,
role: 'guest'
,
},
i18n.t('demoTest-test-ts-before-19299188809a0b65e-10'),
// StringLiteral
);
);
userSystem.addUser(newUser);
userSystem.addUser(newUser);
コピー
コピー済み
コピー
コピー済み
userSystem.performAdvancedOperation(
'数据分析'
); // StringLiteral as argument
userSystem.performAdvancedOperation(
i18n.t('demoTest-test-ts-before-19299188809a0b65e-11'),
); // StringLiteral as argument
// Async operation example
// Async operation example
(async () => {
(async () => {
try {
try {
const remoteUser = await fetchRemoteUserData(4);
const remoteUser = await fetchRemoteUserData(4);
console.log('获取到远程用户数据:', remoteUser); // StringLiteral in console.log
console.log('获取到远程用户数据:', remoteUser); // StringLiteral in console.log
userSystem.addUser(remoteUser);
userSystem.addUser(remoteUser);
} catch (error) {
} catch (error) {
console.error('获取远程用户数据失败:', error); // StringLiteral in console.error
console.error('获取远程用户数据失败:', error); // StringLiteral in console.error
}
}
})();
})();
// Internationalization example
// Internationalization example
console.log(translate('欢迎使用用户管理系统')); // StringLiteral in translate function
console.log(translate('欢迎使用用户管理系统')); // StringLiteral in translate function
console.log(
console.log(
translate('当前在线用户数: {count}', { count: userSystem['users'].length }),
translate('当前在线用户数: {count}', { count: userSystem['users'].length }),
); // Template literal in translate function
); // Template literal in translate function
// Error handling with translated messages
// Error handling with translated messages
try {
try {
throw new Error(ErrorMessages.操作未授权);
throw new Error(ErrorMessages.操作未授权);
} catch (error) {
} catch (error) {
console.error(translate('发生错误: {message}', { message: error.message })); // Template literal in translate function
console.error(translate('发生错误: {message}', { message: error.message })); // Template literal in translate function
}
}
// Date and time handling
// Date and time handling
const currentDate = new Date();
const currentDate = new Date();
console.log(`当前日期和时间: ${currentDate.toLocaleString('zh-CN')}`); // Template literal with method call
console.log(`当前日期和时间: ${currentDate.toLocaleString('zh-CN')}`); // Template literal with method call
// Array operations
// Array operations
コピー
コピー済み
コピー
コピー済み
const fruitList = [
'苹果', '香蕉', '橙子', '葡萄'
]; // Array of StringLiterals
const fruitList = [
i18n.t('demoTest-test-ts-before-19299188809a0b65e-12'),
i18n.t('demoTest-test-ts-before-19299188809a0b65e-13'),
i18n.t('demoTest-test-ts-before-19299188809a0b65e-14'),
i18n.t('demoTest-test-ts-before-19299188809a0b65e-15'),
]; // Array of StringLiterals
console.log('水果列表:', fruitList.join('、')); // StringLiteral and Chinese separator in join
console.log('水果列表:', fruitList.join('、')); // StringLiteral and Chinese separator in join
// Object destructuring
// Object destructuring
const { name, age } = userSystem.getUser(1) || {};
const { name, age } = userSystem.getUser(1) || {};
console.log(`用户信息: 姓名 - ${name}, 年龄 - ${age}`); // Template literal
console.log(`用户信息: 姓名 - ${name}, 年龄 - ${age}`); // Template literal
// String template
// String template
コピー
コピー済み
コピー
コピー済み
const welcomeMessage = `
欢迎
${name}
访问我们的系统。您的账户已经使用了
${age}
年。
`; // Template literal
const welcomeMessage = `
${i18n.t('demoTest-test-ts-before-19299188809a0b65e-16')}
${name}
${i18n.t('demoTest-test-ts-before-19299188809a0b65e-17')}
${age}
${i18n.t('demoTest-test-ts-before-19299188809a0b65e-18')}
`; // Template literal
console.log(welcomeMessage);
console.log(welcomeMessage);
export { UserManager, AdvancedUserManager, fetchRemoteUserData };
export { UserManager, AdvancedUserManager, fetchRemoteUserData };
保存された差分
原文
ファイルを開く
// test.ts import { translate } from './i18n-helper'; import { ApiClient } from './api-client'; // Type definitions type UserRole = 'admin' | 'editor' | 'guest'; interface User { id: number; name: string; age: number; role: UserRole; lastLogin?: Date; } // Enum with Chinese keys (as requested to keep) enum StatusCode { '成功' = 200, '未授权' = 401, '禁止访问' = 403, '未找到' = 404, '服务器错误' = 500, } // Constants with Chinese keys const ErrorMessages = { 用户未找到: 'User not found', 无效凭证: 'Invalid credentials', 操作未授权: 'Unauthorized operation', 服务暂时不可用: 'Service temporarily unavailable', }; // Class class UserManager { private users: User[] = []; constructor(initialUsers: User[] = []) { this.users = initialUsers; console.log('用户管理系统已初始化'); // StringLiteral in console.log } addUser(user: User): void { this.users.push(user); console.log(`新用户 ${user.name} 已添加`); // Template literal in console.log } getUser(id: number): User | undefined { return this.users.find((user) => user.id === id); } updateUser(id: number, updateInfo: Partial<User>): void { const index = this.users.findIndex((user) => user.id === id); if (index !== -1) { this.users[index] = { ...this.users[index], ...updateInfo }; console.log(`用户 ${id} 信息已更新`); // Template literal in console.log } else { console.error(translate(ErrorMessages.用户未找到)); } } deleteUser(id: number): void { const index = this.users.findIndex((user) => user.id === id); if (index !== -1) { this.users.splice(index, 1); console.log(`用户 ${id} 已删除`); // Template literal in console.log } else { console.error(translate(ErrorMessages.用户未找到)); } } listAllUsers(): void { console.log('所有用户:'); // StringLiteral in console.log this.users.forEach((user) => { console.log( `ID: ${user.id}, 姓名: ${user.name}, 年龄: ${user.age}, 角色: ${user.role}`, ); // Template literal in console.log }); } } // Generic function function createAndLog<T>(item: T, logMessage: string): T { console.log(logMessage, item); return item; } // Async function async function fetchRemoteUserData(userId: number): Promise<User> { const apiClient = new ApiClient('https://api.example.com'); try { const response = await apiClient.get(`/users/${userId}`); if (response.status === StatusCode.成功) { return response.data as User; } else { throw new Error(`获取用户数据失败: ${response.statusText}`); // Template literal in Error message } } catch (error) { console.error('API调用错误:', error); // StringLiteral in console.error throw error; } } // Decorator function logMethod( target: any, propertyKey: string, descriptor: PropertyDescriptor, ) { const originalMethod = descriptor.value; descriptor.value = function (...args: any[]) { console.log(`调用方法 ${propertyKey},参数:`, args); // Template literal in console.log const result = originalMethod.apply(this, args); console.log(`方法 ${propertyKey} 执行完成,结果:`, result); // Template literal in console.log return result; }; return descriptor; } // Class using decorator class AdvancedUserManager extends UserManager { @logMethod performAdvancedOperation(operation: string): string { return `执行高级操作: ${operation}`; // Template literal } } // Usage example const userSystem = new AdvancedUserManager([ { id: 1, name: '张三', age: 30, role: 'admin' }, { id: 2, name: '李四', age: 25, role: 'editor' }, ]); userSystem.listAllUsers(); const newUser = createAndLog<User>( { id: 3, name: '王五', age: 28, role: 'guest' }, '创建新用户:', // StringLiteral ); userSystem.addUser(newUser); userSystem.performAdvancedOperation('数据分析'); // StringLiteral as argument // Async operation example (async () => { try { const remoteUser = await fetchRemoteUserData(4); console.log('获取到远程用户数据:', remoteUser); // StringLiteral in console.log userSystem.addUser(remoteUser); } catch (error) { console.error('获取远程用户数据失败:', error); // StringLiteral in console.error } })(); // Internationalization example console.log(translate('欢迎使用用户管理系统')); // StringLiteral in translate function console.log( translate('当前在线用户数: {count}', { count: userSystem['users'].length }), ); // Template literal in translate function // Error handling with translated messages try { throw new Error(ErrorMessages.操作未授权); } catch (error) { console.error(translate('发生错误: {message}', { message: error.message })); // Template literal in translate function } // Date and time handling const currentDate = new Date(); console.log(`当前日期和时间: ${currentDate.toLocaleString('zh-CN')}`); // Template literal with method call // Array operations const fruitList = ['苹果', '香蕉', '橙子', '葡萄']; // Array of StringLiterals console.log('水果列表:', fruitList.join('、')); // StringLiteral and Chinese separator in join // Object destructuring const { name, age } = userSystem.getUser(1) || {}; console.log(`用户信息: 姓名 - ${name}, 年龄 - ${age}`); // Template literal // String template const welcomeMessage = `欢迎 ${name} 访问我们的系统。您的账户已经使用了 ${age} 年。`; // Template literal console.log(welcomeMessage); export { UserManager, AdvancedUserManager, fetchRemoteUserData };
変更されたテキスト
ファイルを開く
import i18n from '@/i18n'; // test.ts import { translate } from './i18n-helper'; import { ApiClient } from './api-client'; // Type definitions type UserRole = 'admin' | 'editor' | 'guest'; interface User { id: number; name: string; age: number; role: UserRole; lastLogin?: Date; } // Enum with Chinese keys (as requested to keep) enum StatusCode { '成功' = 200, '未授权' = 401, '禁止访问' = 403, '未找到' = 404, '服务器错误' = 500, } // Constants with Chinese keys const ErrorMessages = { 用户未找到: 'User not found', 无效凭证: 'Invalid credentials', 操作未授权: 'Unauthorized operation', 服务暂时不可用: 'Service temporarily unavailable', }; // Class class UserManager { private users: User[] = []; constructor(initialUsers: User[] = []) { this.users = initialUsers; console.log('用户管理系统已初始化'); // StringLiteral in console.log } addUser(user: User): void { this.users.push(user); console.log(`新用户 ${user.name} 已添加`); // Template literal in console.log } getUser(id: number): User | undefined { return this.users.find((user) => user.id === id); } updateUser(id: number, updateInfo: Partial<User>): void { const index = this.users.findIndex((user) => user.id === id); if (index !== -1) { this.users[index] = { ...this.users[index], ...updateInfo }; console.log(`用户 ${id} 信息已更新`); // Template literal in console.log } else { console.error(translate(ErrorMessages.用户未找到)); } } deleteUser(id: number): void { const index = this.users.findIndex((user) => user.id === id); if (index !== -1) { this.users.splice(index, 1); console.log(`用户 ${id} 已删除`); // Template literal in console.log } else { console.error(translate(ErrorMessages.用户未找到)); } } listAllUsers(): void { console.log('所有用户:'); // StringLiteral in console.log this.users.forEach((user) => { console.log( `ID: ${user.id}, 姓名: ${user.name}, 年龄: ${user.age}, 角色: ${user.role}`, ); // Template literal in console.log }); } } // Generic function function createAndLog<T>(item: T, logMessage: string): T { console.log(logMessage, item); return item; } // Async function async function fetchRemoteUserData(userId: number): Promise<User> { const apiClient = new ApiClient('https://api.example.com'); try { const response = await apiClient.get(`/users/${userId}`); if (response.status === StatusCode.成功) { return response.data as User; } else { throw new Error(`获取用户数据失败: ${response.statusText}`); // Template literal in Error message } } catch (error) { console.error('API调用错误:', error); // StringLiteral in console.error throw error; } } // Decorator function logMethod( target: any, propertyKey: string, descriptor: PropertyDescriptor, ) { const originalMethod = descriptor.value; descriptor.value = function (...args: any[]) { console.log(`调用方法 ${propertyKey},参数:`, args); // Template literal in console.log const result = originalMethod.apply(this, args); console.log(`方法 ${propertyKey} 执行完成,结果:`, result); // Template literal in console.log return result; }; return descriptor; } // Class using decorator class AdvancedUserManager extends UserManager { @logMethod performAdvancedOperation(operation: string): string { return `${i18n.t('demoTest-test-ts-before-19299188809a0b65e-6')}${operation}`; // Template literal } } // Usage example const userSystem = new AdvancedUserManager([ { id: 1, name: i18n.t('demoTest-test-ts-before-19299188809a0b65e-7'), age: 30, role: 'admin', }, { id: 2, name: i18n.t('demoTest-test-ts-before-19299188809a0b65e-8'), age: 25, role: 'editor', }, ]); userSystem.listAllUsers(); const newUser = createAndLog<User>( { id: 3, name: i18n.t('demoTest-test-ts-before-19299188809a0b65e-9'), age: 28, role: 'guest', }, i18n.t('demoTest-test-ts-before-19299188809a0b65e-10'), // StringLiteral ); userSystem.addUser(newUser); userSystem.performAdvancedOperation( i18n.t('demoTest-test-ts-before-19299188809a0b65e-11'), ); // StringLiteral as argument // Async operation example (async () => { try { const remoteUser = await fetchRemoteUserData(4); console.log('获取到远程用户数据:', remoteUser); // StringLiteral in console.log userSystem.addUser(remoteUser); } catch (error) { console.error('获取远程用户数据失败:', error); // StringLiteral in console.error } })(); // Internationalization example console.log(translate('欢迎使用用户管理系统')); // StringLiteral in translate function console.log( translate('当前在线用户数: {count}', { count: userSystem['users'].length }), ); // Template literal in translate function // Error handling with translated messages try { throw new Error(ErrorMessages.操作未授权); } catch (error) { console.error(translate('发生错误: {message}', { message: error.message })); // Template literal in translate function } // Date and time handling const currentDate = new Date(); console.log(`当前日期和时间: ${currentDate.toLocaleString('zh-CN')}`); // Template literal with method call // Array operations const fruitList = [ i18n.t('demoTest-test-ts-before-19299188809a0b65e-12'), i18n.t('demoTest-test-ts-before-19299188809a0b65e-13'), i18n.t('demoTest-test-ts-before-19299188809a0b65e-14'), i18n.t('demoTest-test-ts-before-19299188809a0b65e-15'), ]; // Array of StringLiterals console.log('水果列表:', fruitList.join('、')); // StringLiteral and Chinese separator in join // Object destructuring const { name, age } = userSystem.getUser(1) || {}; console.log(`用户信息: 姓名 - ${name}, 年龄 - ${age}`); // Template literal // String template const welcomeMessage = `${i18n.t('demoTest-test-ts-before-19299188809a0b65e-16')}${name}${i18n.t('demoTest-test-ts-before-19299188809a0b65e-17')}${age}${i18n.t('demoTest-test-ts-before-19299188809a0b65e-18')}`; // Template literal console.log(welcomeMessage); export { UserManager, AdvancedUserManager, fetchRemoteUserData };
違いを見つける